7

我正在使用 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

但是,在某些情况下,我想做不同的一件事:

我想在我的功能分支 ( mybranch) 上保留我的所有提交,但在合并到develop.

所以这就是我认为的命令序列应该是:

git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff --squash mybranch

--no-ff如果我要与 结合,我会做错事--squash吗?

我犹豫要不要尝试这一点,因为“压缩”和“保留历史”是正交要求 - 请参阅将我的所有提交(包括合并)压缩到一个提交中而不改变历史

我的理由是我想在一个分支 () 上保留历史记录mybranch并在另一个分支 () 上保留 suqash develop--> 因为这些操作是在单独的分支中执行的,所以可以。

4

1 回答 1

0

我尝试将 --squash 和 --no-ff 组合在一起并得到:

fatal: You cannot combine --squash with --no-ff.

git merge 基本上是一个壁球。解决冲突后,它将在开发时显示为一次提交。合并修订的差异是冲突解决的结果。是的,mybranch 上的更改被保留。只需在合并后执行“gitk mybranch &”即可进行验证。

除了影子是正确的。不要害怕。创建一个新分支,玩转看看结果如何。

损坏是在您的“git pull --rebase origin develop”命令中造成的。

答案(假设您有基于 origin/develop 的本地开发分支):

git checkout develop
git pull
git merge --no-ff mybranch
于 2013-05-30T04:31:17.557 回答