如何回到Git中的最新版本?

时间:2010-08-24 17:16:07

标签: git git-checkout

我最近从SVN搬到了Git,对某些事情感到有些困惑。我需要通过调试器运行以前版本的脚本,所以我做了git checkout <previous version hash>并做了我需要做的事情。

现在我想回到最新版本,但我不知道它的哈希值。当我输入git log时,我看不到它。

我该怎么做?此外,是否有更简单的方法来更改版本,而不是输入哈希值 - 比如“返回两个版本”或“按时间顺序排列最近”?

10 个答案:

答案 0 :(得分:337)

git checkout master应该做到这一点。要返回两个版本,你可以说git checkout HEAD~2之类的东西,但最好在那个时候创建​​一个基于的临时分支,所以git checkout -b temp_branch HEAD~2

答案 1 :(得分:49)

当您签出特定提交时,git会创建一个分离的分支。所以,如果你打电话:

$ git branch 

你会看到类似的东西:

* (detached from 3i4j25)
  master
  other_branch

要回到主分支机构,您只需要再次结帐到主分支机构:

$ git checkout master

此命令将自动删除分离的分支。

如果git checkout不起作用,您可能修改了分支之间冲突的文件。为了防止你丢失代码git需要你处理这些文件。您有三种选择:

  1. 存储您的修改(您可以稍后弹出):

    $ git stash
    
  2. 放弃重置分离分支的更改:

    $ git reset --hard
    
  3. 使用之前的修改创建一个新分支并提交它们:

    $ git checkout -b my_new_branch
    $ git add my_file.ext
    $ git commit -m "My cool msg"
    
  4. 在此之后,您可以返回主分支(最新版本):

    $ git checkout master
    

答案 2 :(得分:30)

这对我有用(我仍然在主分支上):

git reset --hard origin/master

答案 3 :(得分:7)

您可以使用分支机构名称进行检查。

我知道有几种方法可以移动HEAD,但是我会把它留给git专家来枚举它们。

我只是想建议gitk --all - 我发现从git开始时它非常有用。

答案 4 :(得分:6)

我刚刚开始深入研究git,所以不确定我是否理解正确,但我认为OP问题的正确答案是你可以使用如下格式规范运行git log --all:{{ 1}}。这会将当前签出的版本标记为git log --all --pretty=format:'%h: %s %d',您只需从列表中获取下一个版本。

顺便说一句,将这样的别名添加到(HEAD),格式稍微好一点,然后就可以.gitconfig运行:

git hist --all

关于相对版本,我发现了这个post,但它只讨论旧版本,可能没有什么可以引用新版本。

答案 5 :(得分:6)

要返回最新版本:

git checkout <branch-name> 

例如,git checkout mastergit checkout dev

答案 6 :(得分:4)

这里的一些答案假设您在决定签出较早的提交之前就已经在master分支上。并非总是如此。

git checkout -

将使您回到以前所在的分支(无论它是否是主分支)。

答案 7 :(得分:2)

当你回到以前的版本时,

$ git checkout HEAD~2
Previous HEAD position was 363a8d7... Fixed a bug #32

即使在这种情况下,您也可以使用此命令查看功能日志(哈希);

$ git log master --oneline -5
4b5f9c2 Fixed a bug #34
9820632 Fixed a bug #33
...

master可以替换为其他分支名称。

然后结帐,您将能够返回该功能。

$ git checkout 4b5f9c2
HEAD is now at 4b5f9c2... Fixed a bug #34

答案 8 :(得分:1)

在Git 2.23+(2019年8月)中,最佳实践是使用git switch而不是confusing git checkout命令。

要基于旧版本创建新分支:

git switch -c temp_branch HEAD~2

要返回到当前的master分支:

git switch master

答案 9 :(得分:0)

更优雅,更简单的解决方案是使用

git stash

它将返回最重新发布的本地版本的分支,并将您的更改保存在存储中,因此如果您要撤消此操作,请执行以下操作:

git stash apply