做git revert的步骤

时间:2015-05-17 01:36:31

标签: git github

我需要回到一个好的配置,这意味着回过头几次提交和一次合并。

有人可以确认正确的步骤吗?或者让我知道这是否是正确的过程。

git checkout master
git revert commita, commitb, (merge happened between b&c), commit c
git push 

...

由于

3 个答案:

答案 0 :(得分:1)

有两个关键问题:

  1. 你有没有推到远程回购?下游的其他人是否已经拥有损坏的版本?
  2. 历史上最后一次提交还是一些提交?
  3. 如果您想要备份。 (拥有它通常是一个好主意。)

    git branch backup_description
    

    只是最后一次提交,包括合并提交,尚未推送或没有其他用户下游。

    git reset --hard <sha-where-it-all-worked-well>
    git push --force origin/master
    

    有下游用户,或者提交回历史。

    git revert commita
    git revert -m 1 mergecommit
    git push
    

    这也有帮助:

    1. https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt
    2. 插图。 enter image description here

答案 1 :(得分:0)

如果您只是想回到最后几次提交,那么您只需要git reset --hard <commit-hash-before-commit-a>(如果您这样做,请确保这些更改尚未推送到服务器)

但是如果你的提交a,b存在于当前头部以下某处,那么使用git revert <commit-hash-a> <commit-hash-b>但是当你想要恢复合并提交时,通过合并两个提交(比如c和d)来进行更改。如果要还原分支上的commit c所做的更改,则必须使用git revert -m 1 <merge-commit-hash>

答案 2 :(得分:0)

让我们说为了简单起见,您希望提交的提交是“f8dec3”。那么您需要做的最简单的事情如下:

git branch savepoint
git reset --hard f8dec3

这会将当前分支的状态重置为该特定修订。在此之前,您将丢失所有提交。

您可以使用git log命令确定要重置的提交的ID,或者最好使用tig之类的工具,通过可视化图表可以更轻松地推理git更改。

如果您发现有问题,那么您可以恢复错误:

git reset --hard savepoint

修复错误

如果您使用git reflog犯了错误,有一种很好的方法可以恢复硬重置。只需键入git reflog并记下硬重置前您之前的提交ID。如果您在重置之前忘记保存分支的状态,这将特别有用(这实际上已经无数次地保存了我,并且使我不会因为使用git命令而感到害怕)。

如果您的远程跟踪分支具有您从硬重置恢复的提交,那么您将需要使用git push -f进行强制推送。但是,在做这件事之前,请仔细考虑一下你是否做了正确的事情。