2011-07-18 45 views
11

可以加入各种提交吗?在不合并的情况下加入各种提交

这是我的情况:

我在OSX 10.6应用runst和10.7如此 我有固定的一些东西为10.6,然后提交, 再次变更为10.7和固定的修复,使他们相互兼容,然后再次提交。 然后又回到10.6,并再次检查,并做一个小再犯等 (三个或四个提交总数,所有这些提交针对相同的问题)

正如你看到的所有这些提交是密切相关的所以我想加入他们,这可能吗?

我还有一个问题需要解决,所以我不打算合并当前分支。 理想情况下,我想每个问题只有一个提交/我解决的错误。

编辑:

我已经把我的提交,因为我必须这样做,在不同的电脑,但支没有被其他人使用,目前还没有。

+0

为什么我得到“-1”? – nacho4d

+0

同意。为什么是-1?这是一个合理的问题,尤其是来自新的git用户。 –

+2

给予好评否定-1 – rasjani

回答

15

一个很好的互动方式是git rebase -i。查看一个分支,查看历史记录,然后在第一次提交之前选择一个您想要“加入”的提交(称为压缩)。然后

git rebase -i <the commit> 

在编辑器中,您将您选择的最近的一个后立刻显示从一个提交列表。它看起来像

pick 2f4b7fa Some commit message 
pick 19f58bd Some other commit message 

找到你想加入的第一个提交。让那一套去“挑选”。然后,对于所有想要压缩的那些,请将“pick”改为“squash”或“s”。标记提交“压扁”意味着它将立即与之前(之上)的提交相结合。然后保存并退出。系统会提示您为将要创建的新提交提交新的提交消息。保存并退出,你就完成了。请注意,您也可以使用分层视图来移动周围的提交。所以,如果你有一些失败的提交,或者你需要将提交移动到一起压缩它们,你也可以这样做。另外需要注意的是:如果您将提交内容推送到远程,那么这可能会让事情发生变化,特别是如果您正在与从该远程计算机上拔出的其他人一起工作。

编辑:既然你已经被推分支已经,你知道没有其他人在使用它,只要按照上面的步骤,然后做一个git push origin master -f,假设远程回购的“原产地”和你”在主分支上。这是一个正常的推动,但-f告诉它覆盖遥控器上的任何内容,并强制应用您的更改。当你从其他人共享的回购工作时,这会变得危险和/或令人困惑。

+2

注:与较新版本的Git,你也有'F'('fixup')选项,这就好比是南瓜,但只是下降的关联提交的提交信息。 – Benjol

+0

@ naocho4d:我的答案更新,以帐户为您编辑 –

+0

@Ryan,我要问如何把它做,因为通常的方式在这种情况下,没有预期的效果,但你已经编辑了!谢谢 :) – nacho4d

2

你推动了你的提交吗?如果没有,你可以尝试git rebase -i。它提供了一个压缩选项来组合提交。 Here's一个有用的链接。

0

如果您在窗口框中,更舒适的方式是使用TortoiseGIT功能。

  • 在弹出菜单中
  • 选择承诺只要打开“显示日志”选项
  • 右击
  • “合并到一个犯”

会做所有的工作适合你,没有可怕的VIM跳舞:)

相关问题