1、修改文件后提交
git add file.txt
git commit -m "提交日志"
2、提交后恢复到某历史版本
(1)git log [--pretty=oneline]
查看commit日志,得到commitID
(2)git reset --hard commitID
3、从版本库恢复之前版本(旧于当前版本)
(1)恢复到当前版本的上一个版本
git reset --hard HEAD^
(2)恢复到当前版本的上两个版本
git reset --hard HEAD^^
或
git reste --hard HEAD^2
4、从版本库恢复到之后的版本(新于当前版本)
(1)git reflog
可以看到当前之前和之后的commitID
(2)使用commitID 恢复
git reset --hard commitID
5、放弃工作区的修改
命令: git checkout -- filename
(1)该文件修改后没有放入暂存区(没有git add)
执行命令后工作区的文件会被版本库的HEAD版本替换
(2)该文件修改后放入(过)暂存区(有git add)
执行命令后工作区的文件会被暂存区(stage)的版本替换
6、已经放到暂存区的文件,如何撤销?
即 已经git add filename,如何撤销?
(1)将版本库中的最新版本回退到暂存区
git reset HEAD filename
(2)把暂存区的回退到工作区
git checkout -- filename
7、查看分支
git branch
git branch -a
8、创建分支
git branch dev
9、切换分支
git checkout dev
or
git switch dev
10、创建并切换到新分支
git checkout -b dev
or
git swtich -c dev
11、合并某分支到当前分支
git merge dev
12、删除分支
git branch -d dev
13、用图形形式查看日志
git log --graph [--pretty=oneline] [--abbrev-commit]
14、禁用Fast forward 模式进行分支合并
禁用FF时,git会在merge时生成一个新的commit
git merge --no-ff -m "this is a xx commit" dev
15、在分支dev开发的过程中需要紧急修复一个bug怎么办?
(1)在dev分支上
git stash (前提是保证此时所有的文件都曾经git add 过)
(2)切换至master分支
git checkout master
(3)新建并切换到bug分支
git checkout -b issure1
(4)修复问题后 git add & git commit
(5)切换至master
git checkout master
(6)将bug修复分支合并至master
git merge --no-ff "merge from issure1" issure1
(7)处理可能的冲突后提交
git add & git commit
注意:后面需要这里的 commitID
(8)回到dev分支
git checkout dev
(9)将master上修复的bug同步到dev
git cherry-pick commitID
(10)恢复之前的dev现场
git stash pop
(11)处理可能的冲突
git add & git commit
16、强制删除一个分支
当尝试删除一个还没有被合并过的分支时会提示删除失败
此时就需要强制删除
git branch -D dev
17、查看远程库信息
git remote -v
18、从本地推送分支
git push origin branch-name
如果推送失败则先 git pull
19、从本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
20、建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
21、git rebase
应用场景:基于master拉取分支dev,在dev上开发了一段时间后,此时master上已经被其他小伙伴推送了一些,此时可以merge也可以rebase;
在dev分支上,git rebase master
此时dev分支的起点即为mster最新的,相对于merge,rebase操作会丢失历史信息。
22、创建标签
标签指向commit
git tag <tagname> [commitID]
git tag -a <tagname> -m "some notes" [commitID]
查看tag
git tag
or
git show <tagname>
23、推送标签到远程库
(1)单个标签
git push origin <tagname>
(2)所有标签
git push origin --tags
24、删除标签
(1)删除本地标签
git tag -d <tagname>
(2)删除远程标签
先从本地删除,然后再推送删除到远程
git push origin :refs/tags/<tagname>