恢复git上次提交并将其保存在不同的分支中

时间:2013-11-17 16:14:48

标签: git git-branch git-commit git-reset

有没有办法回滚最后一次提交并将其放入一个单独的分支以供以后测试?我做了一些我不想完全抛弃的更改,我只想将它们放在另一个分支中进行进一步测试。

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:13)

是的,您可以实现此目的 - 远离当前分支并创建一个新分支以保留提交,签出回原始分支,然后在原始分支中回滚提交。

因此,从您当前的分支(我们称之为current),创建并签出新分支separate

git checkout -b separate

这将create a new branch separate将有新提交。现在回到原始分支

git checkout current

在此分支上,您现在可以rollback the last commit

git reset --hard HEAD~1

如果您以后想要访问旧的提交,则必须执行git checkout separate并且该分支中的提交应该可用。

答案 1 :(得分:3)

您可以分两步完成此操作,而无需在分支之间切换。我们走了。

  1. 从当前分支创建一个新分支,以保留当前状态:

    git branch feature_maybe
    
  2. 恢复当前分支中的最后一次提交:

    git reset --hard HEAD^
    

答案 2 :(得分:0)

是 - 使用git checkout -b <new branch name>检出新分支,使用git checkout <original branch name>切换到原始分支,然后执行git reset --hard HEAD~1将原始分支移回提交。 (与移动分支时一样,使用像gitk这样的程序一步一步地想象你正在做什么是最安全的。)