错误:指定了主线,但提交不是合并;致命:还原失败



我想还原还原的拉请求,即4个提交6283c90f665a5a09ed26805ed1bc

但当我使用命令git revert -m 1 6283c90时,我遇到了以下错误:

error: mainline was specified but commit 6283c90bd35598635fe1d4f96d3a5a8c6ed91206 is not a merge.
fatal: revert failed

git日志图如下所示:

* 6283c90 (HEAD -> main, origin/main, origin/HEAD) Revert "Merge pull request #1 from kgarg8/checkpoint-patch"
* f665a5a Revert "Merge pull request #2 from kgarg8/entmax-patch"
* 09ed268 Revert "Merge pull request #3 from kgarg8/decoding"
* 05ed1bc Revert "Merge pull request #4 from kgarg8/decoding"
*   2a8519e Merge pull request #4 from kgarg8/decoding
|  
| * e170320 (origin/decoding) Fix bugs in decoding
* |   63f0f4c Merge pull request #3 from kgarg8/decoding
|   
| |/  
| * f5ce256 Add temperature, top_k, top_p sampling
* |   168685e Merge pull request #2 from kgarg8/entmax-patch
|   
| |/  
| * 6a44c22 (origin/entmax-patch) Add entmax support
* |   7f61831 Merge pull request #1 from kgarg8/checkpoint-patch
|   
| |/  
| * ea0a7db (origin/checkpoint-patch) Checkpoint load for CPU
|/  
* 4c2d50c Update Seq2Seq_agent.py
... continues

任何帮助都将不胜感激。

必须了解git revertgit reset

revert是指您尝试在顶部添加另一个提交,并将确切的diff作为上一个提交的倒数。在您的情况下,相当于之前4次提交的压缩(即--squash(。

当您的回购没有配置为合并策略时,这样做是有问题的:rebase + ff-only。根据您展示的历史,实际问题是您的项目使用的合并策略。

尽管如此,如果你想实现恢复,你可以做(更多(:

$ git revert --no-commit <SHA-1 (previous)>
$ git revert --no-commit <SHA-1 (previous - 1)>
$ git revert --no-commit <SHA-1 (previous - 2)>
$ git revert --no-commit <SHA-1 (previous - 3)>
$ git commit -m "your message message"
$ git push

reset是将内容放在SHA-1(commit=pointer(上,就像4次提交前一样。大多数时候,人们在寻找revert,实际上他们指的是reset。不确定你的情况。好处在于治理。如果你不能更改历史记录,如果你的用户不被允许使用push --force(强制使用push(,那么你可能需要使用revert作为你项目的治理模型,希望确保人们不会隐藏错误,或者(错误地(从历史记录中删除一些东西。否则,reset是返回的默认方式,尤其是在使用本地分叉时(团队中不允许使用reset的常见示例是针对DevOps团队-针对配置管理回购(。

$ git reset --hard <SHA-1 (previous - 3)>
$ git push --force

其中<SHA-1 (previous - 3)>对您来说可能是05ed1bc,所以实际提交SHA-1。

UPDATE:(注意(当使用reset时,以前的(正向(提交不会被删除,而是保持孤立。它们将保留在历史中,直到调用gc(垃圾回收(为止。它们基本上保留在树上(就像在不同的树枝上,但没有树枝。把它想象成tree数据结构——计算机科学(。如果有人想分析它,你可以检索该提交

最新更新