Git-交互式Rebase和Squashing的问题
题
我知道有很多关于这个的问题,但我似乎根本找不到我正在寻找的答案。
我刚刚将我的任务分支合并到我的master中,我准备将我的更改推送到远程master分支。但是,它们显示为两个提交:
commit 878c07412aab6a6b06b7fc8dd84c2418cc4f31d8
Merge: 9ffa590 c9f5552
Author: ***
Date: Mon May 21 16:02:36 2012 +0100
Merge branch 'modelUpdate4'
Conflicts:
***.xcodeproj/project.pbxproj
commit c9f5552862872673317701c3dffd7fb6b6daa02c
Author: ***
Date: Mon May 21 15:03:21 2012 +0100
Modified model according to requests. Repopulated seeded database.
这是git log的输出和我希望作为一个压缩的两个提交。但是,当我这样做:
git rebase -i HEAD~2
它实际上只是显示4个以前提交(和推送)的提交。我是否误解了我的分支如何合并回来?如果我尝试和git rebase-i这只是在git日志列表中显示第一个提交。
谢谢!
解决方案
既然你说已经推了四个提交,我猜你的图(git log --oneline --decorate --graph
)看起来像这样,你有分支提交之间 master
和 modelUpdate4
已经推送到远程回购:
* (master, modelUpdate4, HEAD) Merge branch 'modelUpdate4'
| \
| * (origin/modelUpdate4) Modified model according to requests. [HEAD^2]
| |
| * Another commit on modelUpdate4
| |
| * Yet another commit on modelUpdate4!
| |
* | (origin/master) Something that conflics with a commit in modelUpdate4 [HEAD~1]
| /
* Previous commit on master [HEAD~2]
HEAD~2
是第一个父母的第一个父母,并且由于您的 HEAD
是一个合并 modelUpdate4
进入 master
, ,它指的是两个提交 master
行。 HEAD^2
是 HEAD's
第二父,所以提交之前 HEAD
向下的 modelUpdate4
行。(另见: http://paulboxley.com/blog/2011/06/git-caret-and-tilde)
如果 HEAD~2
是你的新基地,你会得到之间的所有提交 HEAD~2
和 master
在一条直线上。您还必须处理 modelUpdate4
在发生的地方提交。
* (master, HEAD) Merge branch 'modelUpdate4'
|
* Modified model according to requests. Repopulated seeded database.
|
* Another commit on modelUpdate4
|
* Yet another commit on modelUpdate4!
|
* Something on master that conflics with modelUpdate4
|
* Previous commit on master
如果其他人正在使用这些远程分支,或者您想维护分支历史记录,请不要重新绑定。它将重写已经在远程回购中的历史,这对其他人来说只是一个头疼。推出合并提交,你会是金色的。
或者,您可以直接转基到 origin/master
. origin/modelUpdate4
最终会在git boonies中结束,但由于它是一个任务分支,我打赌你无论如何都会删除它。