我有两个提交。提交B取决于提交A.提交A被放弃。现在我因合并B而收到错误。它表示由于B对A的依赖而提交,合并待决。
我用谷歌搜索但无法找到确切的答案。我需要一步一步的解决方案,因为我是git的新手,并且很难理解如何解决这个问题。
这就是发生的事。
git在本地提交A。
git push for A in a。
A被遗弃了,但是我当地的git已经提交了A.
git在本地为同一分支中的B提交(使B依赖于A)。
git在同一分支的遥控器中推送B.
现在B没有合并,因为A被放弃了。
我需要合并B,我希望依赖A删除。希望它现在清楚!
这是服务器错误:
更改1184 - 已提交,合并待处理
在评论中:
Gerrit Code Review
由于缺少依赖性,无法合并更改。该 还必须提交以下更改: (commit-id,被遗弃)
是否会改变工作?如果是的话,该怎么做?
答案 0 :(得分:7)
有几种方法可以解决您的问题。挑选你觉得最舒服的。
这是一个:
git checkout yourbranch
(确保您在正确的分支上)git reset --hard A^
(在A之前将所有内容重置为提交)git cherry-pick B
(其中B是您要保留的提交的哈希值)git log
(确认这是你想要的)git push --force
(可能需要指定其他选项,具体取决于您通常的推送方式)这是另一个,结果是等价的:
git checkout yourbranch
(确保您在正确的分支上)git rebase --onto A^ A
(在A之前提交A之前的所有内容,有效删除A)git log
(确认这是你想要的)git push --force
(可能需要指定其他选项,具体取决于您通常的推送方式)这是第三个,结果仍然相同:
git checkout yourbranch
(确保您在正确的分支上)git rebase --interactive A^
(将打开您的编辑)git log
(确认这是你想要的)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。