代码之家  ›  专栏  ›  技术社区  ›  Nathan Long

如何回到Git的最新版本?

  •  267
  • Nathan Long  · 技术社区  · 15 年前

    我最近从SVN转到Git,有点困惑。我需要通过调试器运行以前版本的脚本,所以我这样做了 git checkout <previous version hash> 做了我该做的。

    git log ,我看不出来。

    我该怎么做?另外,有没有比输入散列更简单的方法来更改版本?比如“返回两个版本”或“按时间顺序转到最近的版本”?

    8 回复  |  直到 9 年前
        1
  •  388
  •   Ana Betts    15 年前

    git checkout master 应该会成功的。回到两个版本,你可以说 git checkout HEAD~2 ,但最好创建一个临时分支 基于 git checkout -b temp_branch HEAD~2

        2
  •  59
  •   Thomio    9 年前

    当您签出到特定的提交时,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"
      

    在这之后 您可以返回主分支(最新版本):

        3
  •  40
  •   Liam Joshua    7 年前

    这对我来说是个窍门(我仍然在主分支上):

    git reset --hard origin/master
    
        4
  •  9
  •   Reggie Pinkham    9 年前

    git checkout <branch-name> 
    

    例如, git checkout master git checkout dev

        5
  •  9
  •   Itai Noam    6 年前

    git checkout -
    

    将指向以前所在的分支(不管它是否是主分支)。

        6
  •  7
  •   Jay    15 年前

    我知道有几种方法可以移动头部,但我会让git专家来列举它们。

    gitk --all --从git开始我发现它非常有用。

        7
  •  7
  •   Community Mohan Dere    9 年前

    我刚刚开始深入研究git,所以不确定我是否理解正确,但我认为OP问题的正确答案是你可以运行 git log --all 格式规范如下: git log --all --pretty=format:'%h: %s %d' (HEAD) 你可以从列表中选下一个。

    .gitconfig 格式稍微好一点,你就可以跑了 git hist --all :

      hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph
    

    关于相对版本,我发现了这个 post ,但它只谈到旧版本,可能没有什么可以参考的新版本。

        8
  •  3
  •   kujiy    10 年前

    当你回到以前的版本时,

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

    即使在这种情况下,您也可以使用这个命令查看您的特性日志(hash);

    $ 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
    
        9
  •  1
  •   VonC    6 年前

    对于Git2.23+(2019年8月),最佳实践是使用 git switch 而不是 confusing git checkout

    git switch -c temp_branch HEAD~2
    

    要返回到当前主分支,请执行以下操作:

    git switch master
    
        10
  •  0
  •   Ilya Gazman    10 年前

    一个更优雅和简单的解决方案是使用

    git stash
    

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

    git stash apply