我正在处理我的feature branch
并在审核后将其合并到development
进行部署。后来,一位同事决定发布并将他和我的合并到master
。在部署时,他意识到他的代码是错误的并且还原master
。
在我们的fork-and-pull流程中,这意味着现在development
和master
都会被还原。
当我今天早上来的时候,我按照惯例从发展中重新开始,然后学会了恢复。
现在我尝试cherry-pick
我原来的feature branch
工作只是意识到它给了我"空提交消息"因为还原。
非常感谢任何帮助。
答案 0 :(得分:10)
Cherry-pick和rebase检查提交的补丁ID(基本上是更改的散列),并且已经看到分支上存在更改,因此它不会选择它。重新绑定有时可以起作用,因为文件中的更改可能导致实际差异稍微改变 - 导致不同的补丁ID - 但对您来说情况似乎并非如此。
你可以“恢复还原”,但这将重新引入你的同事介绍的破碎位。然后你需要恢复你的同事提出的错误提交。这是一个很好的回复,并且保持平稳,所以慢慢来,让别人和你坐在一起,以确保你不会错过任何东西。
另一种选择可能是通过git show COMMIT_ID | git apply
重播您的提交。这会将diff重新应用于您的工作树。只要您的树是干净的,您就可以使用git commit -C COMMIT_ID
重新使用原始提交中的消息。您可以使用git format-patch
和git am
来避免额外的步骤。
答案 1 :(得分:0)
使用交互式变基来编辑要保留的第一个提交git rebase -i myfirstcommitid^
。应用修改提交。这应该更改哈希。使用git rebase --continue
完成变基,所有提交现在都应具有新的ID,以便您可以随意闲逛。