由于放弃提交,Git合并未决

Vin*_*y99 4 git gerrit

我有两个提交.提交B取决于提交A.提交A被放弃.现在我因合并B而收到错误.它表示由于B对A的依赖而提交,合并待决.

我用Google搜索,但无法找到确切的答案.我需要一步一步的解决方案,因为我是git的新手,我很难理解如何解决这个问题.

这就是发生的事情.

  1. git在本地为A提交

  2. git推送远程A.

  3. 一个被遗弃,但我当地的git已经承诺A.

  4. git在本地为同一分支中的B提交(使B依赖于A).

  5. git在同一分支的远程推送B.

  6. 现在B没有合并,因为A被抛弃了.

我需要合并B,我希望依赖A删除.希望它现在清楚!

这是服务器错误:

更改1184 - 已提交,合并待定

在评论中:

Gerrit Code Review

由于缺少依赖性,无法合并更改.还必须提交以下更改:(commit-id,已被放弃)

rebase工作?如果是这样,怎么办?

jsa*_*ryd 9

有几种方法可以解决您的问题.挑选你觉得最舒服的.

这是一个:

  1. git checkout yourbranch (确保你在正确的分支)
  2. git reset --hard A^ (在A之前将所有内容重置为提交)
  3. git cherry-pick B (其中B是您要保留的提交的哈希值)
  4. git log (确认这是你想要的)
  5. git push --force (可能需要指定其他选项,具体取决于您通常的推送方式)

这是另一个,结果是等价的:

  1. git checkout yourbranch (确保你在正确的分支)
  2. git rebase --onto A^ A (在A之前的A之前将A之后的所有内容重新绑定,有效地删除A)
  3. git log (确认这是你想要的)
  4. git push --force (可能需要指定其他选项,具体取决于您通常的推送方式)

这是第三个,结果仍然相同:

  1. git checkout yourbranch (确保你在正确的分支)
  2. git rebase --interactive A^ (将打开你的编辑)
  3. 删除显示提交A,保存并关闭的行
  4. git log (确认这是你想要的)
  5. git push --force (可能需要指定其他选项,具体取决于您通常的推送方式)