我怎样才能将我的git仓库切换到特定的提交

在我的git仓库中,我做了5个提交,就像在我的git log中一样:

commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc Author: Michael Date: Fri Feb 4 15:26:38 2011 -0800 commit b688d46f55db1bc304f7f689a065331fc1715079 Author: Michael Date: Mon Jan 31 10:37:42 2011 -0800 commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda Author: Michael Date: Wed Jan 26 13:33:17 2011 -0800 commit 4771e26619b9acba3f059b491c6c6d70115e696c Author: Michael Date: Wed Jan 26 11:16:51 2011 -0800 commit 6e559cb951b9bfa14243b925c1972a1bd2586d59 Author: Michael Date: Fri Jan 21 11:42:27 2011 -0800 

我怎样才能在分支机构本地回滚我以前的4次提交? 换句话说,我怎样才能创build一个分支没有我最新的4提交(假设我有从git日志提交的SHA)?

要创build一个新的分支(本地):

  • 使用提交哈希(或部分)

     git checkout -b new_branch 6e559cb 
  • 或者从HEAD返回4个提交

     git checkout -b new_branch HEAD~4 

一旦你创build了新的分支(在本地),你可能想在一个名字相同的远程上复制这个改变: 我怎么把我的改变推送到一个远程分支


为了丢弃最后三个提交 ,请参阅下面的Lunaryorn的答案 。


要将当前分支HEAD移动到指定的提交而不创build新的分支 ,请参阅下面的Arpiagar的答案 。

所有上面的命令都会创build一个新的分支,并且最新的commit是命令中指定的那个,但是如果你想让你当前的分支HEAD移动到指定的commit,下面是命令

  git checkout <commit_hash> 

分离并指向HEAD指定的提交,并保存创build一个新的分支,当用户只是想查看分支状态,直到该特定的提交。


然后您可能想要回到最新的提交和修复分离的HEAD:

修复一个Git分离的头?

如果你想扔最新的四个提交,使用:

 git reset --hard HEAD^^^^ 

或者,您可以指定要重置的提交的哈希值:

 git reset --hard 6e559cb 

只需检出您希望从新分支开始的提交并创build一个新分支

 git checkout -b newbranch 6e559cb95