我正在使用git flow方法来管理我的存储库中的分支,如:http://nvie.com/posts/a-successful-git-branching-model/
因此,我应该使用的命令顺序如下:
git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff mybranch然而,在某些情况下,我想做一件不同的事情:
我想保留我在feature分支(mybranch)上的所有提交,但在合并到develop中时,将它们合并在一起(或压缩)为一个diff。
因此,我认为命令的顺序应该是:
git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff --squash mybranch如果我把--no-ff和--squash结合起来,我会做错什么吗?
我在犹豫要不要尝试这一点,因为“压缩”和“保存历史”是正交需求--参见Squashing all of my commits (including merges) into one commit without altering history
我的基本原理是,我希望在一个分支(mybranch)上保留历史,而在另一个分支(develop)上保留suqash -->因为这些操作是在不同的分支中执行的,所以这是可以的。
发布于 2013-05-30 12:31:18
我试着把--squash和--no-ff组合在一起,得到了:
fatal: You cannot combine --squash with --no-ff.git合并基本上就是一个挤压。在解决冲突之后,它将在开发时显示为一个提交。合并修订的差异是冲突解决的结果。是的,我的分支上的更改是保留的。只需在合并后执行"gitk mybranch &“即可进行验证。
此外,影子是正确的。不要害怕。创建一个新的分支,尝试一下,看看结果是什么。
损坏是在你的"git pull --rebase origin develop“命令中造成的。
答案(假设您有基于源/开发的本地开发分支):
git checkout develop
git pull
git merge --no-ff mybranchhttps://stackoverflow.com/questions/16826912
复制相似问题