我在Git的Gerrit中遇到了这个问题。
我尝试了什么-
通过互联网阅读可能的解决方案后,我进行了硬复位,对changeId-241的更改消失了。 我虽然从reflog回来了。 但是片刻,当我尝试签出branch-ONE(执行HARD重置)时,我对changeId-241的更改消失了。
答案 0 :(得分:1)
无法确定您已经做了什么,但是似乎您有这样的事情:
BASE --- COMMIT-1 <= branch-1
\
\--- COMMIT-2 <= branch-2
分支2上的COMMIT-2依赖于分支1上的COMMIT-1,因此,当您将COMMIT-2自动推到Gerrit时,也会同时推COMMIT-1。 Gerrit将拒绝COMMIT-1,因为放弃了更改240。
您应该像这样并行工作:
BASE --- COMMIT-1 <= branch-1
\
\--- COMMIT-2 <= branch-2
这样,COMMIT-2不会依赖COMMIT-1,因此您可以根据需要修改提交,并根据需要在Gerrit中提交/放弃其更改。
答案 1 :(得分:0)
如果您要同时推送这两个更改以供查看,请恢复已放弃的更改并尝试再次推送,或者使用带有交互选项的rebase命令(git rebase -i HEAD〜2)来更新已放弃的更改的提交消息,从提交消息中删除“更改ID”行,以使gerrit不会尝试将新的补丁集上载到放弃的更改,而是上载新的更改。
如果您只想上传最新的提交,则使用相同的rebase命令从本地存储库中删除放弃的更改。
git rebase -i HEAD~2