将下一次提交的更改合并到当前提交

时间:2012-12-09 08:57:48

标签: git merge commit revert

我正在追溯我的历史记录,以找到我的应用程序究竟打破iOS5.1的原因。我已将其跟踪到单个提交,但提交有许多文件。

我想git checkout [commit before iOS5 break],并且在没有提交更改之前,将破坏iOS5(即下一次提交)的提交中的所有更改合并到提交中。这样我就可以简单地还原每个文件,直到找到具有破坏iOS 5的更改的文件。

如何从提交中获取更改并将它们放在我当前的分支上而不提交它们的任何想法?

感谢。

2 个答案:

答案 0 :(得分:2)

您必须先创建分支:

 git checkout -b fix bcd7c93
 git merge -n 8b53674 # merge without auto-commit

您的解决方案会创建:

  • a detached head:你根本无法合并,因为你的下一次提交不会被任何分支HEAD引用(因此“分离”部分)
  • a duplicate commit:您将无法轻松将您的“fix”分支合并回master(或您发现有缺陷提交的当前分支)

这个想法是能够修复错误(修改了一个或两个文件)并将其合并回主分支而不重复所有你发现有问题的提交的其他文件部分

答案 1 :(得分:1)

很抱歉回答我自己的问题,但事实证明cherry-pick有这个选项:

git checkout -f bcd7c93
git cherry-pick -n 8b53674