gpt4 book ai didi

git - 使远程分支 5 提交回来

转载 作者:太空狗 更新时间:2023-10-29 14:31:01 24 4
gpt4 key购买 nike

我已经提交并推送了分支。现在我决定恢复最后两次提交,我知道我可以做 git reset --hard HEAD~2,我就这么做了。现在在我的本地分支中,提交后退了两步。但是我怎样才能把它推到远程分支呢?我的意思是我怎样才能使远程分支也返回 2 次提交?

我问的原因是,在我完成上述本地恢复后,我更改了代码并提交了。当我推送到远程仓库时,出现拒绝错误:

Updates were rejected because the tip of your current branch is behind

====更新====

我尝试了@Tim Biegeleisen 的回答,git revert --no-commit HEAD~5.. 但出现错误:

error: commit d7f37d67f8dbdaecc534c06316b7417657e527 is a merge but no -m option was given. fatal: revert failed 

并且远程分支显示最新的提交是“Merge branch 'foo' of ...”

最佳答案

鉴于您的分支是公开和共享的,您可能执行硬重置以实际删除前 2 个提交。相反,使用 git revert:

git revert master~2..master

或者也许

git revert --no-commit HEAD~2..

这将在您的 master 分支的 HEAD 之上添加一个新的提交,这将在功能上撤消当前的前 2 个提交。请注意,这些提交仍将存在,这意味着任何 pull 的人都会收到一个新的提交。

编辑:

根据您的评论和错误消息,这两个提交之一似乎是 merge 提交。这意味着您需要告诉 Git 在进行还原时要遵循两个父项中的哪一个。我不知道有什么方法可以在具有一系列提交的单个命令中执行此操作,但我们可以尝试执行两个单独的还原。假设 HEAD 指向 merge 提交:

git revert -m 1 abc123    # or use -m 2 to follow the other parent

此处 abc123 是 HEAD 提交的 SHA-1 哈希,您可以使用 git log 找到它。然后,对第二次提交进行第二次还原:

git revert xyz345

关于git - 使远程分支 5 提交回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55594420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com