1

我正在回溯我的历史,以找出究竟是什么破坏了我的应用程序的 iOS5.1。我已将其跟踪到单个提交,但是该提交有很多文件。

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

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

谢谢。

4

2 回答 2

2

您必须先创建一个分支:

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

您的解决方案创建:

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

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

于 2012-12-09T09:13:51.150 回答
1

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

git checkout -f bcd7c93
git cherry-pick -n 8b53674
于 2012-12-09T09:11:58.927 回答