如何在恢复之后挑选承诺?

时间:2014-05-15 14:50:44

标签: git github git-revert git-cherry-pick

我正在处理我的feature branch并在审核后将其合并到development进行部署。后来,一位同事决定发布并将他和我的合并到master。在部署时,他意识到他的代码是错误的并且还原master

在我们的fork-and-pull流程中,这意味着现在developmentmaster都会被还原。

当我今天早上来的时候,我按照惯例从发展中重新开始,然后学会了恢复。

现在我尝试cherry-pick我原来的feature branch工作只是意识到它给了我"空提交消息"因为还原。

  1. 这是因为还原是我之前提交的镜像吗?
  2. 有没有办法恢复还原? (让我头疼)
  3. 无论如何都要让我的提交显示在差异中,因为我已经重新定位了
  4. 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:10)

Cherry-pick和rebase检查提交的补丁ID(基本上是更改的散列),并且已经看到分支上存在更改,因此它不会选择它。重新绑定有时可以起作用,因为文件中的更改可能导致实际差异稍微改变 - 导致不同的补丁ID - 但对您来说情况似乎并非如此。

你可以“恢复还原”,但这将重新引入你的同事介绍的破碎位。然后你需要恢复你的同事提出的错误提交。这是一个很好的回复,并且保持平稳,所以慢慢来,让别人和你坐在一起,以确保你不会错过任何东西。

另一种选择可能是通过git show COMMIT_ID | git apply重播您的提交。这会将diff重新应用于您的工作树。只要您的树是干净的,您就可以使用git commit -C COMMIT_ID重新使用原始提交中的消息。您可以使用git format-patchgit am来避免额外的步骤。

答案 1 :(得分:0)

使用交互式变基来编辑要保留的第一个提交git rebase -i myfirstcommitid^。应用修改提交。这应该更改哈希。使用git rebase --continue完成变基,所有提交现在都应具有新的ID,以便您可以随意闲逛。