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

时间:2015-08-11 17:02:44

标签: git gerrit

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

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

这就是发生的事。

  1. git在本地提交A。

  2. git push for A in a。

  3. A被遗弃了,但是我当地的git已经提交了A.

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

  5. git在同一分支的遥控器中推送B.

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

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

    这是服务器错误:

      

    更改1184 - 已提交,合并待处理

    在评论中:

      

    Gerrit Code Review

         

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

    是否会改变工作?如果是的话,该怎么做?

2 个答案:

答案 0 :(得分:7)

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

这是一个:

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

    1. git checkout yourbranch(确保您在正确的分支上)
    2. git rebase --onto A^ A(在A之前提交A之前的所有内容,有效删除A)
    3. git log(确认这是你想要的)
    4. git push --force(可能需要指定其他选项,具体取决于您通常的推送方式)
    5. 这是第三个,结果仍然相同:

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

答案 1 :(得分:0)

Here就像你的问题一样。

  

如果committ B依赖于A,则在A为A之前不能合并B.   合并。由于你已经放弃了A,Gerrit不会自动放弃   合并B.

     

您需要做的是修改B(可能使用git rebase)   它不再依赖于A,并将更改重新提交给Gerrit。

如何重新合并/合并?

git-review -d 1184 
git rebase origin/master
git status
<edit "both modified" files in status report>
git add <files>
git rebase --continue
git review

查找有关此类问题的更多有用信息here