Git 将各种提交合并到一个中而不合并

Git 将各种提交合并到一个中而不合并,git,Git,可以加入各种提交吗 这就是我的情况: 我的应用程序在OSX 10.6和10.7中运行,所以 我已经为10.6修正了一些东西然后承诺, 更改为10.7并再次修复修复,使其兼容,然后再次提交。 然后返回到10.6,再次检查它并再次进行一次小的提交,等等。 (总共三次或四次提交,且所有这些提交均针对同一问题) 正如您所看到的,所有这些提交都是密切相关的,所以我想加入它们,这可能吗 我还需要处理另外一个问题,所以我不打算合并当前的分支。 理想情况下,我希望每个解决的问题/bug只提交一次 编辑: 我已经

可以加入各种提交吗

这就是我的情况:

我的应用程序在OSX 10.6和10.7中运行,所以 我已经为10.6修正了一些东西然后承诺, 更改为10.7并再次修复修复,使其兼容,然后再次提交。 然后返回到10.6,再次检查它并再次进行一次小的提交,等等。 (总共三次或四次提交,且所有这些提交均针对同一问题)

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

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

编辑:


我已经推送了我的提交,因为我必须在不同的计算机上这样做,但是分支还没有被其他人使用。

一个很好的交互方式是使用
git-rebase-I
。签出一个分支,查看历史记录,然后选择一个要“加入”的第一个提交之前的提交(称为挤压)。然后

在要加入的列表中找到第一个提交。将该选项设置为“拾取”。然后,对于所有你想挤进去的,将“pick”改为“squash”或只是“s”。将提交标记为“挤压”意味着它将与紧接在它前面(上面)的提交组合在一起。然后保存并退出。系统将提示您为将要创建的新提交输入新提交消息。保存并退出,您就完成了。请注意,您还可以使用rebase视图,通过移动行来移动提交。因此,如果您有一些不符合顺序的提交,或者需要将提交移动到一起以挤压它们,您也可以这样做。另一个注意事项:如果您已将提交推送到远程,这可能会使事情升级,特别是如果您正在与其他从远程启动的人一起工作


编辑:既然您已经推送了分支,并且您知道没有其他人在使用它,那么只需按照上述步骤,然后执行一个
git推送原始主机-f
,假设远程回购是“原始”且您在主分支上。这是一个正常的推送,但是-f告诉它覆盖远程上的任何内容,并强制应用您的更改。当你从他人共享的回购协议中工作时,这会变得危险和/或令人困惑。

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

若你们在窗口框上,更舒适的方法是使用龟甲功能

  • 只需在弹出菜单中打开“显示日志”选项
  • 选择提交
  • 右击
  • “合并到一个提交”

将为您完成所有工作,而不会出现糟糕的VIM舞蹈:)

注意:对于较新版本的git,您还有
f
fixup
)选项,它类似于挤压,但只会删除相关提交的提交消息。@Ryan,我想问一下如何推送它,因为在这种情况下,使用常规方法没有期望的效果,但您已经编辑了它!谢谢:)同意。为什么是-1?这是一个合理的问题,特别是对于一个新的git用户来说。
git rebase -i <the commit>
pick 2f4b7fa Some commit message
pick 19f58bd Some other commit message