在没有合并的情况下加入各种提交

时间:2011-07-18 03:32:20

标签: git

是否可以加入各种提交?

这是我的情况:

我的应用程序在OSX 10.6和10.7中运行 我修复了一些东西10.6然后承诺, 更改为10.7并再次修复修复程序以使它们兼容,然后再次提交。 然后回到10.6然后再次检查并再次做一个小提交,等等。 (共有三到四次提交,所有这些提交都是针对同一个问题)

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

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

修改

我已经推送了我的提交,因为我必须在不同的计算机上执行此操作,但该分支未被其他人使用,尚未使用。

3 个答案:

答案 0 :(得分:15)

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

git rebase -i <the commit>

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

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

找到您要加入的第一个提交。留下一组“挑选”。然后,对于你想要压缩的所有那些,将“pick”改为“squash”或只是“s”。将提交标记为“压缩”意味着它将在紧接其之前(上方)与提交相结合。然后保存并退出。系统将提示您为将要创建的新提交提供新的提交消息。保存并退出,你就完成了。请注意,您还可以使用rebase视图通过改变周围的线来移动提交。因此,如果您有一些无序的提交或者您需要将提交移到一起来压缩它们,您也可以这样做。另一个注意事项:如果你已经将你的提交推送到遥控器,这可能会让事情变得更糟,特别是如果你正在与那些从那个遥控器上拉的人一起工作。

修改:由于您已经推送了分支,并且您知道其他人没有使用它,只需按照上述步骤操作,然后执行git push origin master -f,假设远程repo是“origin”,你在主分支上。这是正常推送,但-f告诉它覆盖遥控器上的任何内容并强制应用您的更改。当你在其他人共享的回购邮件中工作时,这会变得危险和/或令人困惑。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

  • 只需打开弹出菜单中的“显示日志”选项
  • 即可
  • 选择提交
  • 右键单击
  • '结合一次提交'

将为你完成所有工作,没有糟糕的VIM舞蹈:)