Git Revert命令拒绝恢复合并
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git Revert命令拒绝恢复合并相关的知识,希望对你有一定的参考价值。
我应该是一个简单的案例,但它让我感到神秘,我在这里找不到其他任何实际有效的答案。
我有几个合并到master
,我想回滚。我想要的最终结果是master
在这些提交之前被设置回来,所以我可以从一个已知的好分支推进以确保master
只显示prod-released代码。
这是日志:
my.username@mysystem MINGW64 /c/Git/REPOSITORY (master)
$ git log --oneline
e6a1eed (HEAD -> master, origin/master, origin/HEAD) Merge pull request #26
from PROGRAM/revert-24-int_project_2.1.0
b9b82f0 (tag: PROGRAM_project-2.0.0, origin/int_project_2.0.0,
int_project_2.0.0) Revert "Merge pull request #24 from
PROGRAM/int_project_2.1.0"
c4a6573 Revert "PROGRAM_project_2.0.0"
c3aa6d1 (tag: PROGRAM_project_2.0.0) Merge pull request #24 from
PROGRAM/int_project_2.1.0
**b7e583a** (tag: project_tag_2.1.0_01) Merge pull request #23 from
PROGRAM/dev_project_2.1.0
**54ecb7a** June 2.1.0 release.
**b67f981** Merge pull request #22 from PROGRAM/int_project_2.0.0
f9b81bc (tag: project_tag_2.0.0_04, origin/int_project_2.0.0fix,
int_project_2.0.0fix) Merge pull request #21 from PROGRAM/dev_project_2.0.0
这是我尝试恢复合并的结果(我已经恢复了一个合并(#24),但后来发现还有两个需要去(#22和#23)。这是我尝试的时候发生的事情还原:
my.username@mysystem MINGW64 /c/Git/REPOSITORY (master)
$ git revert -m 1 b7e583a
On branch master
Your branch is up to date with 'origin/master'
nothing to commit, working tree clean`
有一次,它抱怨我在远程仓库中有不属于本地的变化,这不应该是master
分支的情况,因为除非在特定情况下没有任何东西应该推到那个分支,所以我不知道为什么git应该关心其他分支机构正在发生的事情。我做了一个pull
并且投诉消失了,但是我害怕通过降低我正在恢复的提交来拉动我的恢复。
我对git和github比较陌生,所以我在理解填充方面有很多空白,在这种情况下,我可能会遗漏一些通常被认为更有经验的知识的基本部分或知识。 git用户。
在git中,您可以通过两种方式丢弃不需要的提交:您可以还原它们,或者您可以通过从分支的历史记录中删除它们来删除它们。
从历史中删除
删除提交是整理的最佳方式,但如果其他用户正在分支上工作并且已经撤消了不需要的提交,他们将在下次推送时对其进行抢占。当他们尝试拉动并发现上游历史发生变化时,它们也会让他们感到困惑。因此,通常不建议在共享/公共分支上执行此操作。
如果可以,重置历史记录并丢弃到已知的好处:
git reset --hard <good commit>
git push -f origin HEAD
还原
还原创建一个新的提交,以对抗错误的提交。这在与他人共享但仍留下“混乱的历史”的分支上是安全的。
你做的看起来是正确的。 revert似乎没有做任何事情的事实告诉我,你试图恢复的某些合并提交可能包含在之前的恢复中?
执行revert-ish操作以确保代码与给定时间点完全匹配的确定方法是在此时检出,备份文件,返回要修复的分支,将文件复制到顶部并承诺。它将完全匹配,git将只提交具有差异的文件(即它将具有与恢复相同的效果)。
git checkout -b temp-branch <good-commit>
<copy files somewhere>
git checkout -
<copy files over workspace>
git add .
git commit
确保你没有复制.git
目录。有一些方法可以通过使用更多的奥术git命令来实际避免复制,例如git read-tree
,但上面的内容很容易理解。
祝好运!
以上是关于Git Revert命令拒绝恢复合并的主要内容,如果未能解决你的问题,请参考以下文章