在git documentation for the checkout command中找到以下文字:
......如果没有给出路径, git checkout还会将HEAD更新为 将指定的分支设置为 目前的分支......
任何人都可以更简单地解释这意味着什么吗?如果看起来很简单,我很抱歉,通过该页面阅读,我似乎无法想出它的确切含义。对不起,如果这看起来很基本..
特别是我对checkout如何更新HEAD感到困惑。我通常设想影响工作目录的结账 - 这是git独有的能力,因为你为了以后的工作目的而更新你的本地存储库副本?
答案 0 :(得分:3)
HEAD
是指向您的工作副本签出的提交的指针。因此,如果您签出分支(或提交或标记),则HEAD
将设置为该提交。
此信息存储在文本文件.git/HEAD
中,您只需查看其内容:
$ cat .git/HEAD
# refs: refs/heads/master
答案 1 :(得分:3)
这意味着git checkout branchname
将
HEAD
设置为该分支的提示,以便您现在“开启”它。示例:
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)。
不再结帐(处理分支和文件)。