【Git 篇】git revert 之后分支名称会变成 Feature_xx|REVERTING

123 阅读3分钟

git revert 之后分支名称会变成 Feature_xx|REVERTING ;不想继续revert,想回退,怎么处理?

当你执行 git revert 时,Git 会在本地创建一个新的提交来撤销指定的提交。这个操作的过程中,Git 会进入一个“reverting”状态,这时你会看到分支名称后面加上 |REVERTING,比如 Feature_xx|REVERTING

为什么会看到 |REVERTING

  • REVERTING 状态:当你执行 git revert 并且 Git 正在处理撤销提交时,Git 会进入一个特殊的状态,这时分支名会加上 |REVERTING,表明你正在进行撤销操作。
  • 原因:这是因为 git revert 会产生一个“撤销提交”(即反向应用的变更),如果该操作正在进行,Git 会将当前的 HEAD 标记为“正在进行 revert 操作”状态。

例如,当你执行 git revert <commit_hash> 时,Git 会:

  1. 从指定的提交中生成一个新的“撤销提交”。
  2. 在你进行实际提交之前,如果你查看分支名称,它可能会显示为 Feature_xx|REVERTING

你看到本地有变化,不想继续 revert,如何撤销操作?

如果你已经执行了 git revert,但是决定不继续这个操作,或者你不想提交这个撤销提交,可以按照以下方式操作:

1. 如果你尚未提交 revert 操作

  • 如果你已经执行了 git revert,并且你看到本地有更改,但尚未提交这些更改,你可以使用 git reset 来撤销本地的更改(即取消这次 revert 操作)。
git reset --mixed HEAD
  • --mixed:这会撤销对提交的影响,将当前工作区中的变更恢复为未暂存状态(你可以选择是否继续处理这些变更)。
  • --hard:如果你希望彻底丢弃所有更改(包括工作目录的更改),可以使用 git reset --hard HEAD

2. 如果你已经提交了 revert 提交

  • 如果你已经提交了 revert 提交,但现在决定撤销这个提交,执行以下步骤:
  1. 查看 git log 获取最近的提交哈希。

    git log
    
  2. 执行 git reset 回退到 revert 提交之前的状态:

    假设 HEAD^revert 提交之前的提交,可以执行:

    git reset --hard HEAD^
    

    这将把当前分支重置到上一个提交,并且丢弃 revert 提交的影响。

  3. 如果已经推送到远程,你可能需要强制推送:

    git push origin Feature_xx --force
    

3. 如果你不想丢弃更改,仅取消提交

如果你想保留本地更改,但不希望提交这个 revert 提交,你可以先回退提交,然后使用 git reset --soft

git reset --soft HEAD^

这样会保留撤销提交的更改,但它们会变成未暂存的更改,你可以选择如何处理。


总结

  • Feature_xx|REVERTING 是 Git 在执行 git revert 时的一个标记,表示你正在撤销某个提交。
  • 如果你尚未提交 revert 操作,可以使用 git reset --mixed HEADgit reset --hard HEAD 撤销更改。
  • 如果你已经提交了 revert 提交,可以使用 git reset --hard HEAD^ 来回退到 revert 提交之前的状态。

希望这个解答能帮助你!如果有任何问题,欢迎继续提问。