GIT checkout命令路径的简单说明

时间:2010-09-20 19:07:47

标签: git git-checkout

git documentation for the checkout command中找到以下文字:

  

......如果没有给出路径,   git checkout还会将HEAD更新为   将指定的分支设置为   目前的分支......

任何人都可以更简单地解释这意味着什么吗?如果看起来很简单,我很抱歉,通过该页面阅读,我似乎无法想出它的确切含义。对不起,如果这看起来很基本..

特别是我对checkout如何更新HEAD感到困惑。我通常设想影响工作目录的结账 - 这是git独有的能力,因为你为了以后的工作目的而更新你的本地存储库副本?

5 个答案:

答案 0 :(得分:3)

HEAD是指向您的工作副本签出的提交的指针。因此,如果您签出分支(或提交或标记),则HEAD将设置为该提交。

此信息存储在文本文件.git/HEAD中,您只需查看其内容:

$ cat .git/HEAD
# refs: refs/heads/master

答案 1 :(得分:3)

这意味着git checkout branchname

  1. 将该分支的提示中的文件签出到您的工作目录中,然后
  2. HEAD设置为该分支的提示,以便您现在“开启”它。
  3. 示例:

     jb@apto % git branch         
     * develop
       master
       next
     jb@apto % git checkout master
     Switched to branch 'master'
     jb@apto % git branch
       develop
     * master
       next
    

答案 2 :(得分:3)

版本A:(仅指定 分支)

git checkout <branch>

获取该&lt; branch&gt;的所有文件并在指定的分支处放置HEAD(指向“我现在在哪里”的指针)。

版本B (指定路径

git checkout <file>

获取最新版本的&lt; file&gt;并留下HEAD一个人。

答案 3 :(得分:1)

如果您处于DETACHED HEAD模式(请参阅this question),您可以轻松地将HEAD重置为主分支:

dd http://marklodato.github.com/visual-git-guide/checkout-b-detached.svg

此处“git checkout”会将HEAD重置为master分支的提示 (更多“A Visual Git Reference”)
它还将更新索引和工作目录 所以它不只是重置指针'HEAD'。

答案 4 :(得分:0)

在Git 2.23+(2019年8月)中,使用git switch代替confusing git checkout,并使用git restore(仅适用于文件)

git switch master

这会将HEAD切换回master

您仍然可以使用git switch --detach <acommit>直接引用提交(分离的HEAD)。
不再结帐(处理分支和文件)。