在另一位开发人员重置之后修复git分支

时间:2015-06-23 09:37:09

标签: git github

我们2位开发人员正在分支机构工作。我做了两次提交,推了推,后来我们决定不再要它们了。

我在2次提交之前对sha进行了git reset -i <sha>,然后强制将它推送到github上的分支。

另一个开发人员拥有代码的本地副本,我的2次提交,以及他自己的一些提交,他没有被推送到github。

我们不知道如何保存他的代码和提交,但删除了我从推送的github分支中删除的两个提交。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,其他开发人员的本地分支看起来像这样(反向时间顺序):

+- (F) His last commit (Required)
+- (E) His commits 2, 3, 4, etc ... (Required)
+- (D) His commit 1 (Required)
+- (C) Your commit 2 (To be discarded)
+- (B) Your commit 1 (To be discarded)
+- (A) Base commit (one that you reset to)

你想要提交他的提交D,E,F,并丢弃你的提交B和C.如果是这样,请在他的分支中执行以下操作:

  • 创建标签以提交F。
  • 重置以提交A.
  • Cherry-pick提交D,E,F。(您可能需要解决合并冲突。)
  • 强制推送到远程分支。

这应该达到你想要的效果,但是,除非你有充分的理由不这样做,否则我会推荐以下内容:

  • 您进行另一次提交撤消更改,然后推送到远程。
  • 其他开发人员提取此新提交,并重新对其进行更改。
  • 然后他把它推到遥远的地方。

最终结果是相同的,除了三个&#34;额外&#34;提交,B,C和&#34;撤消提交&#34;。这确实避免了推力,这不是错误的&#34;本身,但可能导致问题。如果您将来需要它,也可能在不同的环境中,它还会在历史记录中保留您不需要的代码。