Git 推送到远程因放弃更改而被拒绝
Git Push to remote rejected due to abandon change
我在 Gerrit 中遇到这个问题,Git。
- 我进行了更改(branch-ONE)并从 eclipse 推送到 gerrit(比如更改 Id-240)。但没有合并。
- 接下来我又创建了一个分支(branch-TWO)并提交更改而不修改之前的提交。所以得到了新的 gerrit 更改 Id(例如,更改 id-241)。
- 接下来我放弃了changeId 240
- 现在,当我尝试从 branch-TWO 推送我的更改时,它说 remote rejected 因为它试图推送到 changeid 240 而不是 241。为什么?
我试过的--
通过互联网阅读可能的解决方案后,我进行了硬重置,我对 changeId-241 的更改消失了。
我虽然从 reflog 取回了它。
但是,当我尝试检查 branch-ONE(进行硬重置)时,我对 changeId-241 的更改消失了。
我正在尝试遵循这个 -
不可能确定你做了什么,但你似乎有这样的事情:
BASE --- COMMIT-1 <= branch-1
\
\--- COMMIT-2 <= branch-2
branch-2 上的 COMMIT-2 依赖于 branch-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,因此您可以根据需要修改提交,并 submit/abandon 根据需要在 Gerrit 中进行更改。
如果你想推送两个更改以供审查,那么要么恢复放弃的更改并尝试再次推送,要么使用带有交互选项的 rebase 命令 (git rebase -i HEAD~2) 更新放弃更改的提交消息,从提交消息中删除 "Change ID" 行,这样 gerrit 就不会尝试将新的补丁集上传到放弃的更改,而是上传新的更改。
如果你只想上传最新的提交,那么使用相同的 rebase 命令从你的本地 repo 中删除放弃的更改。
git rebase -i HEAD~2
我在 Gerrit 中遇到这个问题,Git。
- 我进行了更改(branch-ONE)并从 eclipse 推送到 gerrit(比如更改 Id-240)。但没有合并。
- 接下来我又创建了一个分支(branch-TWO)并提交更改而不修改之前的提交。所以得到了新的 gerrit 更改 Id(例如,更改 id-241)。
- 接下来我放弃了changeId 240
- 现在,当我尝试从 branch-TWO 推送我的更改时,它说 remote rejected 因为它试图推送到 changeid 240 而不是 241。为什么?
我试过的--
通过互联网阅读可能的解决方案后,我进行了硬重置,我对 changeId-241 的更改消失了。 我虽然从 reflog 取回了它。 但是,当我尝试检查 branch-ONE(进行硬重置)时,我对 changeId-241 的更改消失了。
我正在尝试遵循这个 -
不可能确定你做了什么,但你似乎有这样的事情:
BASE --- COMMIT-1 <= branch-1
\
\--- COMMIT-2 <= branch-2
branch-2 上的 COMMIT-2 依赖于 branch-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,因此您可以根据需要修改提交,并 submit/abandon 根据需要在 Gerrit 中进行更改。
如果你想推送两个更改以供审查,那么要么恢复放弃的更改并尝试再次推送,要么使用带有交互选项的 rebase 命令 (git rebase -i HEAD~2) 更新放弃更改的提交消息,从提交消息中删除 "Change ID" 行,这样 gerrit 就不会尝试将新的补丁集上传到放弃的更改,而是上传新的更改。
如果你只想上传最新的提交,那么使用相同的 rebase 命令从你的本地 repo 中删除放弃的更改。
git rebase -i HEAD~2