Answers:
如果要避免合并提交,则需要确保所有提交都是快速进行的。为此,请确保在合并之前像这样将功能分支清楚地重新建立到开发的基础上:
git checkout master
git checkout -b feature/foo
# make some commits
git rebase master
git checkout master
git merge --ff-only feature/foo
Rebase也有很多标志,包括与-i
标志的交互式重定基准,但是如果您要使事情尽可能简单并希望在合并时保留所有分支历史记录,则可能不需要。
--ff-only
标志除了重新设置基准外,使用--ff-only
标志还将确保仅允许快速提交。如果它是合并提交,则不会进行提交。git-merge(1)手册页显示:
--ff仅
拒绝合并并以非零状态退出,除非当前的HEAD已经是最新的,或者可以将合并解析为快进。
这里已经提到“重新设置”的“ Todd A. Jacobs”是这个概念。这只是一种更详细的处理方式。
假设您在master分支上
$ git branch
* master
您要进行修复,因此创建一个从母版分支出来的“ fixbranch”
$ git checkout -b fixbranch
也许您会在该分支上工作几天,并进行了几次提交。
您想将提交推送到中央主存储区的那一天!结帐母版,并从中央母版存储库获取最新更改
$ git checkout master
$ git pull origin master
将修补程序分支与主服务器重新建立基础,以保持干净的历史记录,并解决本地存储库本身中的任何冲突。
$ git checkout fixbranch
$ git rebase master
现在,fixbranch已与中央master一起更新,让我将fixbranch合并到master分支中
$ git checkout master
$ git merge fixbranch
我受够了!让我把本地主人推向中央主人
$ git push origin master