GIT使用学习简记,具体内容参考 廖雪峰Git教程,易百Git教程。如需详细了解,请参考官方文档:git
mkdir <目录名>
cd <目录名>
pwd
第一步为非必须操作,git的版本库创建只需要进入目标目录即可,只有在目标目录下才可以创建。
git init
git add <目标文件全名,包括后缀>
将目标文件放入暂存区stage/index ,在这里add可以同时添加多个文件,用空格隔开即可。
例如:git add xxx.txt 14124.txt sdsaf.txt
git commit -m "<备注>"
将暂存区所有文件提交至分支(默认为master)
完成以上两步即可上传至仓库中
因为git commint命令会一次性将所有暂存区文件提交,所以可以多次使用add命令。
git status
git diff <文件名>
git diff <版本号1><版本号2><版本号3>
git diff <分支1> <分支2>
比较当前文件和暂存区文件差异。
比较两次提交之间的差异。
比较两个分支的差异。
git log
git log --pretty=oneline
历史版本中的commit id就是版本ID,在需要使用版本ID的时候只需要输入版本号前几位即可,Git会自动查找匹配。
git reflog
git reset --hard commit_id
HEAD 是指针,它会指向当前分支的当前版本;版本的切换实际上也就是改动HEAD所指向的分支,分支指向的版本。
commint_id就是版本号。
通过查看提交历史可以查看过去提交的版本号。
通过查看命令历史可以查看未来的版本号(当你已经回退到某一个版本,才会使用这个查看之前提交的最新版本号,因为回退会导致其版本后提交的版本号无法查询到,这个时候命令历史就会起作用了)。
git restore <文件名>
以下两种场景可以使用该命令:
1、文件修改后未提交至暂存区
2、文件修改后提交到了暂存区,然后又再次进行修改
以上两种场景使用后的结果为:
1、恢复至修改前
2、恢复至提交至暂存区时的修改(注:此时再使用一次该命令也没办法撤销了,因为文件以及被放入了暂存区,这就需要使用另一个命令)
git restore --staged <文件名>
此为提交至暂存区后使用的撤销指令,首先通过这个指令撤销提交至暂存区的操作。然后再次使用第一个指令,撤销文件修改操作,即可实现撤销修改。
rm <文件名>
因为删除实际上也是属于修改的一种,故此可以通过撤销指令放弃删除。
在使用了删除后只需要commit一下就可以切实的删除了。
使用撤销指令放弃删除时需要注意,它只会恢复至你提交到版本库的最新版本(或者是恢复到暂存区中未提交的最后一个版本),所以可能会让你未提交的修改丢失。
如果我说的不是很清楚,建议自己操作尝试一下吧。
创建SSH Key。
1、在用户主目录下查看是否存在 .ssh 目录。
2、如果有,再看看这个目录下有没有 id_rsa (私钥)和 id_rsa.pub (公钥)这两个文件。
3、如果已经有了就可以通过GitHub或者自己的服务器使用,不管用哪个都还需要后续的设置,设置中就会使用到公钥,所以在此不做记录。
4、如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key
ssh-keygen -t rsa -C "邮箱"
输入邮箱后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
git remote add origin git@server-name:path/repo-name.git;
要关联一个远程库,使用命令。
git push -u origin master
关联后,使用命令,第一次推送master分支的所有内容。
加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来。
git push origin master
此后,每次本地提交后,只要有必要,就可以使用命令推送最新修改。
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。
git clone
url填入地址即可。
查看远程仓库信息
git remote
查看远程仓库详细信息
git remote -v
推送分支
git push origin <分支名>
抓取分支(推送分支失败时使用,时候后再重新提交,如果出现冲突先解决冲突)
git pull
在本地创建和远程分支对应的分支
git checkout -b <分支名> origin/<分支名>
建立本地分支和远程分支的关联
git branch --set-upstream <分支名> origin/<分支名>
创建并切换至该分支(输入需要创建的分支名)
git checkout -b <分支名>
或者
git switch -c <分支名>
创建分支,如果不添加分支名为查看已有分支(输入需要创建的分支名)
git branch <分支名>
切换分支(输入需要切换的分支名)
git checkout <分支名>
或者
git switch <分支名>
合并分支(输入需要合并的分支名)
git merge <分支名>
删除分支(输入需要删除的分支名)
git branch -d <分支名>
如果要丢弃没被合并的分支,可以使用强制删除
git branch -D <分支名>
如果在合并分支时出现冲突警告,可以先使用status命令,查看是什么文件发生了冲突。
git status
在发现冲突文件以后可以通过cat命令直接进入内部查看冲突的内容。
cat <文件名>
在修改文件,解决了冲突以后需要再次进行,add和commit操作。
合并完成以后可以通过命令查看分之合并图。
git log --graph
或者
git log --graph --pretty=oneline --abbrev-commit
在完成这些以后,如果需要删除分支,也可以使用命令。
git branch -d <分支名>
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并。
git merge --no-ff -m "备注" <分支名>
而fast forward合并就看不出来曾经做过合并。
git merge <分支名>
当我们需要修复bug的时候,我们可以通过创建一个bug分支,在分支上对其修复以后再进行合并。而如果此时你有个紧急bug需要你修复,而正好此时在编辑内容,我们可以通过stash命令对工作现场进行保存。
git stash
当修复完成,并且合并完分支以后,你想回到刚才正在编辑内容的分支,此时只需要使用git stash list,这样就可以查看所有在分支上刚才暂时保存的内容。
git stash list
而恢复命令有两种方式:一种是恢复到保存的编辑状态,不删除保存列表中的记录;一种是恢复到保存的编辑状态,并且删除掉保存列表中的记录。
git stash apply
恢复所保存的编辑状态
git stash drop
删除保存列表记录
git stash pop
恢复所保存的编辑状态,并删除保存列表中的记录
git stash apply stash@{ID}
通过这个命令可以对保存列表记录中某一条记录进行恢复
面对我们在基线上已经修复的bug,需要将其同步到我们目前没有修复bug的分支上,可以使用cherry-pick命令,将其提交的记录复制到分支上。在ID中只要填入commit的id即可。
git cherry-pick
创建标签(默认为HEAD)
git tag <标签名>
给指定commit创建标签
git tag <标签名>
创建带有说明的标签
git tag -a <标签名> -m "说明"
-a用于指定标签名
-m指定说明文字
查看所有标签
git tag
显示标签信息
git show <标签名>
删除标签
git tag -d <标签名>
推送标签(创建的标签通常会存储于本地,不会自动推送)
git push origin <标签名>
推送所有标签
git push origin --tags
删除远程标签(需要先删除本地,才能再删除远程)
git tag -d <标签名>
git push origin :refs/tags/<标签名>