git分支管理
建立dev分支
在当前分支下新建一个dev分支然后切换到该分支
git branch dev
git checkout dev
# 相当于 git checkout -b dev
git branch -a
查看分支,当前分支前会有*标识
git add .
git commit -m "some changes in dev"
修改工作区文件,并在dev分支上进行一次提交
git branch -d branchname
删除本地分支
合并分支
快速合并
切回master分支,合并dev到当前分支,然后删除dev分支
git checkout master
git merge dev
git branch -d dev
这次合并是 Fast-forward 快速模式,直接将 master 指向 dev 的当前分支
解决冲突
若在dev分支中修改的文件,在master分支中也被修改了,此时合并则会提示冲突
Auto-merging readme.txt
CONFLICT (add/add): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
需要根据提示手动解决冲突,然后再提交
git add readme.txt
git commit -m "fix conflict"
git status可以输出有冲突的文件
git使用<<<<<<<,=======,>>>>>>>标记不同分支的内容
git log --graph --pretty=oneline --abbrev-commit
查看合并情况
git log --graph
查看分支合并图
分支管理策略
Fast-forward 快速合并模式,删除分支后,会丢掉分支信息,若要强制禁用 Fast-forward 模式,git会在merge时生成一个新的commit,此时,从分支历史可查看分支信息
git merge --no-ff -m "merge with no-ff" dev
--no-ff表示禁用Fast-forward,本次合并master需要进行一次commit,所以使用-m添加描述
git log --graph --pretty=oneline --abbrev-commit
查看分支历史
分支策略:首先,master分支应是稳定的,仅用来发布新版本,都在dev分支上进行开发,dev是不稳定的,每个开发人员都有自己的分支,可经常与dev分支进行合并,但只在发布新版本时与master分支合并
bug分支
开发过程中,若突然接到一个代号3的bug需要紧急修复,但是当前正在dev上的开发还未完成,但是bug又很紧急,这时候应该先将工作区内容保存,并切换到相应分支,并新建一个临时分支修复bug
git stash将当前工作空间保存,等以后恢复后继续工作
如需要在master分支上修复bug,在该分支上创建临时分支
git checkout master
git branch -b issue3
完成修复后,合并issue3到master分支并删除issue3分支,再切回到dev分支继续开发
git checkout master
git merge issue3
git branch -d issue3
git checkout dev
git status
此时,git status查看发现工作区是干净的,未被修改过
git stash list查看stash中内容,发现里面有原工作区内容
从stash中恢复
git stash apply
恢复保存的内容,但stash中内容不被删除,可用git stash drop主动删除
git stash pop
将stash中内容出栈,stash中内容会被删除
可以多次git stash,恢复的时候使用git stash list查看,再指定恢复的内容
git stash apply stash@{0}
feature分支
开发过程中,在添加新功能时,肯定不希望一些实验性的代码将主分支搞乱,所以每添加一个新功能时最好新建一个feature分支,开发完成后,合并并删除
此时,接到一个新任务,任务代号caribbean,功能计划占领加勒比,跟随杰克船长
git checkout -b feature-caribbean
开发完成后,提交,合并再删除
就在此时,接到命令,杰克船长不再出现在加勒比了,任务终止
需要删除该分支git branch -d feature-caribbean
git会提示该分支还未被合并,若删除会丢掉修改,若要强行删除,需使用-D参数即可

浙公网安备 33010602011771号