仓库刚创建的时候是只有一个master
主分支的,在实际应用中,多人开发时,为了避免代码未完成,提交时对当前版本造成影响,我们可以根据当前版本创建一个分支来完成自己的模块和功能,并在完成之后合并到主分支即可,由于我是在windows系统下进行操作的,所以以下操作均已windows为基准
文中出现的dev为本次记录使用的分支名称
$ git branch dev
$ git checkout dev
git checkout -b dev
git branch
命令可以查看所有分支信息,其中有*标注的为当前分支
git merge dev
可以将dev的分支合并到当前分支,如果合并出现冲突时,需要解决冲突,然后再git commit
才行
默认情况下,合并的时候是处于快进模式
fast-forward
(直接将当前分支指向被合并的分支),这个模式下删除被合并的分支时,会丢失分支信息,因为合并的时候没有创建commit
解决方案:
git merge --no-ff -m'xxxxx' dev
- 意为本次提交禁用fast-forward模式,且合并时会生成一个
commit
,所以需要加上-m'xxxxxx'
使用
git log --graph --pretty=oneline --abbrev-commit
可以查看当前分支的合并情况,快进模式下合并不会存在记录
git branch -d dev
可以删除掉dev这个分支
当分支没有合并过,且有新增的文件在版本库时,执行
git branch -d dev
是无法删除分支, 当然也可以强制删除,将-d
改为-D
当文件修改未完成,又需要紧急修改另一个文件时,提交当前未完成的代码肯定会有影响,这个时候可以先储藏当前工作区
git stash
可以储藏当前工作区,需要注意的是:
git status
还是会提示将那些文件add
到暂存区如果没有上述的情况,那就可以执行git stash
,然后创建分支修改另一个文件:
修复完成后,提交并合并到最新分支,然后回到储藏的那个分支,还原工作区
git stash apply
通过上面的命令可以恢复内容,但是在
stash
里面的内容不会删除,需要git stash drop
来删除解决方案:
git stash pop
可以在恢复的同时删除掉储藏的内容
git stash list
可以查看储藏区的内容
git stash apply stash@{0}
git stash drop stash@{0}
git stash clear