git fetch后跟checkout FETCH_HEAD是什么意思?

3
以下命令是干什么用的:

```rm -rf /```

git fetch <remote> <branch> && git checkout FETCH_HEAD

我只有一个本地分支 (master),我执行了上述命令。我应该期望我的本地仓库发生什么变化,我如何验证(查看)它们?


这个链接可能会有所帮助。 - undefined
1个回答

6
你可能已经知道你的命令的第一部分将做什么。 git fetch <remote> <some_branch> 将更新你指定的分支的本地跟踪分支。但这不会改变你机器上实际的相应的本地分支some_branch
当你执行 git fetch时,Git 有一个特殊的引用叫做 FETCH_HEAD,它指向刚刚获取的分支。在这种情况下,它将指向 remote/some_branch,因为这是刚刚获取的分支。通过执行
git checkout FETCH_HEAD

你将以分离的HEAD状态检查origin/some_branch。这可能是你想要的,也可能不是,但无论如何,你的复合命令实际上不会更新本地的some_branch。为了做到这一点,你需要一个额外的git merge步骤,或者只需从some_branch执行git pull


几点说明:(1)我不认为我有一个“本地跟踪分支”。如果我执行“git branch -r”(在fetch之前和之后),我看不到我正在fetch的分支。(2)我不确定我是否理解了你对“git checkout FETCH_HEAD”命令的解释。你是不是意思是通过执行这个命令,我只是进入了刚刚fetch的远程分支的“本地副本”? - undefined
嗯...你肯定有一个本地的追踪分支,否则就不可能进行fetch/pull操作。输入git branch -a命令,你会看到本地和追踪分支。如果你执行git checkout FETCH_HEAD命令,你将会以分离HEAD状态切换到本地追踪分支。如果我使用的一些术语对你来说不熟悉,那就去研究一下吧,因为它们在Git术语中经常出现。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接