终端里如何复制粘贴
在cmder里
粘贴是鼠标右键粘贴时shift+Insert复制是用鼠标选中即自动复制在Git Bash里
粘贴是鼠标中键粘贴时shift+Insert复制是用鼠标选中,然后右键,选中copy复制是用鼠标选中,然后按ctrl+Insert命令缩写
程序员把动词缩写,就变成了命令易错点
少写了空格多写了空格用了中文符号进错了目录用的不是Bash而是CMD救命快捷键 ctrl+c用于中断一个命令
增删改查(文件)
查:查看文件或目录
查看当前目录绝对路径
pwd
查看当前目录内容
ls
查看指定目录内容
ls路径
查看文件内容
cat 路径head 路径tail 路径less 路径
增:创建文件
创建 1.txt
touch 1.txtecho hi>1.txtecho hihi>>1.txtecho -e "1n2" >1.txt
创建目录
mkdir amkdir -p a/b/c
同时创建多个文件
touch 1.txtm2.txt
同时创建多个目录
mkdir -p a/b/c a/d/c
增:创建文件
复制文件
cp 1.txt 2.txt
复制目录
cp -r a b
删:删除文件
删除 1.txt删除目录 a/删除有内容的目录 a/不是什么文件都可以删,系统文件绝不可以删,除非你想重装系统cd~ 进入命令行的第一件事
改:修改文件或目录
修改文件内容
追加文件内容
清空文件
移动文件/目录
重命名文件/目录(同上)
修改文件最后更新时间
把命令变成文件
步骤
创建一个文件,后缀无所谓,可以没有添加执行权限(windows没有这个概念,跳过)把你要执行的命令写到文件里运行【sh正确路径】即可执行
这个文件,叫做脚本文件
学的是bash,所以是bash脚本文件
文件就是命令,命令就是文件(前提是加了PATH,且有执行权限)
本地仓库
git就是开启GitHub的钥匙
所有软件都是要先配置的
git的6行配置
请粘贴到命令行里运行
git config --global user.name 你的英文名git config --global user.email 你的邮箱git config --global push.default simplegit config --global core.quotepath falsegit config --global core.editor "code --wati"git config --global core.autocrlf input
注意
上面的英文名和邮箱跟GitHub没有关系可以跟GitHub的用户名和邮箱保持一致,也可以不一致你需要保证code是可以直接在命令行执行的,如果不能执行,你需要安装VS Code并配置PATH。运行完这六行,你才能开始用git,git就是一个命令而已,Bash命令行里有很多命令
git 解决了什么问题?
一个只有程序员会遇到的问题:版本控制
考虑场景1
老板:给我做一个页面
程序员:花了一天时间,做出来了,请过目
老板:不够醒目,再改改
程序员:好嘞
程序员:又花了一天时间,请过目
老板:还是之前的好看,改回去
程序员:好的(MMP,不早说,我现在已经没法撤销了)
每次给老板看之前复制以下不就好了
有效的土办法
git 可以让你的代码有版本
你可以随时回退到某个版本,当然git还有其他更强大的功能
git init(初始化)
git init会创建.git目录
git add 路径
选择哪些变动是要提交的,路径可以是绝对路径,相对路径 , .和*
.gitignore
描述哪些变动是不需要提交的,常见的有 nodemodules ,.DS_Store, .idea , .vscode
git commit -m 字符串
提交,并说明提交理由,字符串里如有空格,就用引号包起来
git commit -v
建议学习这种习惯,它能帮你回顾你刚刚改了什么东西,而且会迫使你把提交理由写的更详细一点
已经创建了一个拷贝
可以通过git log查看
多提交几次
git add . git commit -v
每次重复这两个操作即可
不要少写.
不要少写空格
git reset --hard xxxxxx
xxxxxx是提交号的前6位
请一定确保你已经把所有代码commit了,因为这个操作会使没有commit过的变动消失
gitit log z只会显示之前的提交
使用git reflog 可以查看所有提交
然后用git reset --hard xxxxxx回去
总结
git add 选择要提交的内容.gitignore 文件描述不提交的内容git commit -v用来提交git log 用来查看历史git reset --hard xxxxx用来切换版本git reflog 用来查看所有历史考虑场景2
老板:给我做一个页面
程序员:请过目
老板:不够醒目,再改改
老板娘:我举得挺好,要是能做五彩斑斓的黑就好
程序员:好嘞,我做两份你们对比下(MMP,你两就不能统一意见)
如何同时做两条线开发?
土办法是复制一份,变成两个目录
git branch x
可以创造平行时间线x ,术语叫分支
git branch x
git checkout x
l两个时间线交替进行
总结
git branch 基于当前commit创建一个新的时间线(分支),我在那个分支提交,代码就出现再那个分支git chekout 用于切换另一个分支,当前目录有没提交的代码,只要跟另一个分支不冲突,就不需要理会,如果冲突了呢?可以使用git stash,也可以合并冲突考虑场景3
老板:昨天和老板娘达成一致,两个版本都要,我的放上面,老板娘的在下面
程序员:好的,我合并一下
git merge将另一个分支合并到当前分支
可能有冲突,也可能没冲突,要学会解决冲突
解决冲突的办法
发现冲突
你在合并分支的时候,会得到conflict提示
使用git status -sb 查看哪个/哪些文件冲突了
解决冲突
依次打开文件搜索====四个等于号在上下两个部分中选择要保留的代码可以只选上面,也可以只选下面,甚至可以都选删除不用的代码,删除==== >>>> <<<<这些标记git add对应文件再次git status -sb,解决下一个文件的冲突直到没有冲突,运行git commit(注意不需要选项)
总结
分支可以合并
进入要保留的分支,运行git merge x
合并完后删除无用的分支git branch -d x
合并时冲突怎么办
解决冲突即可
然后git commmit,使用默认的commit message
大总结
.git目录就是本地仓库它不会复制相同的文件(优化)它剋支持多个分支
一些细节
git add 处理的是文件变化,而不是文件,比如你删除一个文件后,依然要用git add来添加到待提交区大部分时候,你只需要知道git add .和git commit -v即可,其他命令很少用到
git 远程仓库GitHub
代码需要存储在云端
比如你需要在公司和家里写代码,比如的你笔记本坏了,比如你运行了rm-rf/
GitHub可以存储你的代码
只需要两行命令
git remote add origin git@ xxxxxxgit push -u origin master
但是我们要先解决一个问题
GitHub怎么知道是你在操作你的代码
SSH Key 验证身份
一些事实
推理
你咋GitHub上有一个账号你的git仓库在你的电脑上。GitHub怎么会知道这个电脑和这个账号都属于你呢?
答案
每次输入一次密码(HTTPS协议),太不方便使用ssh key电脑上放私钥,GitHub账号里留下公钥上传代码是用私钥加密,GitHub用公钥解密如果解开了,说明是配对的
如何生成ssh key
生成ssh key
GitHub有帮助文档
运行ssh-keygen -t rsa -b 4096 -C你的邮箱
然后一直回车,直到没有提示
cat ~/.ssh/id_rsa.pub得到公钥内容,粘贴到GitHub
打开GitHub,在设置页面填入公钥
如何测试配对成功了
ssh -T git@
如果问你yes/no,请回答yes并回车
设置了公钥就能上传和下载了
通过git pull/git push/git clone
上传代码
现在可以上传代码了新建GitHub Repo,复制ssh地址复制页面里面的代码git remote add origin git @xxxx 在本地添加远程仓库地址
origin是远程仓库的默认名字,可以换,建议不换
不要使用https://地址,因为每次都需要密码
git push -u origin master推送本地master分支到远程origin的master分支
如果提示你应该git pull...,你就git pull一下git pull是先把远程分支合并到本地对应的分支如果远程分支没有更新果,才可以省略git pull
记住这个提示
如果push的时候遇到此提示
运行git pull
再重新运行之前的命令
原理示意图
如何上传其他分支
方法一
git push origin x:x
方法二
git checjout xgit push -u origin x
GitHub用来备份.git /而已
下载别人的代码
如何下载代码
git clone git @xxxxx[目标路径]如果是不同机器,要写上传新的ssh key(一机一key)cd目标路径git add /git commit /[git pull]/git push四连操作
如何下载某个分支
先下载某个仓库,然后git checkout分支名
可以上传到两个远程仓库吗
只需要两句话
git remote add repo2 git@ xxxxxx
git push -u repi2 master
如果提示git pull
说明你新建项目的时候创建了一些文件
你只需要运行git pull之后再运行刚才的命令
国内GitHub的代替品
(腾旭战略投资)码云(开源中国)远程仓库
只是本地仓库的备注,所以变化都要先commit到本地仓库,然后push到远程
无法下载部分代码,只能clone整个仓库
git 高级操作
使用bash alias 简化命令
gst/ga/gc/gl/gp
#