一、普通命令
创建版本库
$ git init
添加到暂存区
$ git add file1.txt
$ git add file2.txt file3.txt
把暂存区的所有内容提交到当前分支
$ git commit -m "add 3 files."
仓库当前的状态
$ git status
提交历史
$ git log --pretty=oneline learn.java
命令历史
$ git reflog
删除版本库中的数据
$ git rm
推送远程版本库
$ git push origin master
二、分支管理
查看分支:git branch
创建分支:git branch featural
切换分支:git checkout master
创建+切换分支:git checkout -b featural
合并某分支到当前分支:git merge featural
删除分支:git branch -d featural
查看分支合并图:git log --graph
三、参考场景
1)文件add到暂存区后,没commit之前,恢复
git reset HEAD readme.txt
暂存区没了,但工作区还有没add的数据,可接下列命令
2)丢弃工作区的修改 / 恢复工作区删除的文件(checkout 实际上是用版本库里的版本替换工作区的版本)
回到最近一次git commit或git add时的状态
git checkout -- readme.txt
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
3)commit之后,恢复(参考版本回退)
(查看历史版本号:$ git log --oneline)
(版本回退错了,想查看已回退的版本号:git reflog)
$ git log --oneline
$ git reset --hard 1094a
四、创建Bug分支
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
创建并切换dev分支
隐藏当前工作现场
$ git stash
切换master分支
$ git checkout master
新建并切换Bug分支
$ git checkout -b issue-101
------------ 修复Bug --> add / commit ------------
切换master分支
$ git checkout master
合并分支
$ git merge --no-ff -m "merged bug fix 101" issue-101
切回原工作场景
$ git checkout dev
查看之间隐藏工作区在哪里
$ git stash list
还原之前隐藏的当前工作现场
$ git stash pop