据我了解,每次运行git fetch
时,都会在本地下载远程对象,并且会创建一个名为FETCH_HEAD
的轻量级指针,指向远程分支的HEAD
提交。
由于分支仅仅是指针,因此与创建本地分支有何不同?有哪些设计考虑因素支持使用git fetch
时不创建本地分支的情况?
答案 0 :(得分:1)
查看此条目What does FETCH_HEAD in Git mean?。
由于分支仅仅是指针,因此与创建本地分支有何不同?有哪些设计考虑因素支持使用git fetch时不创建本地分支的情况?
因为git fetch
的目的是收回已知远程分支和关联的丢失对象的状态。这与拥有同源本地分支不同,后者在这种情况下可能被配置为跟踪其远程同源。
分支通常被配置为确实自动创建该本地分支,但是只有在您首先使用git checkout
将其检出后才可以。
答案 1 :(得分:0)
git fetch
实际上可以在本地创建一些新分支,但不能在您中创建。对于每个新分支,它都会创建一个远程跟踪分支,它是远程状态的图像,您无法与它进行交互,就像您的本地分支一样, git branch
。
如果自上次获取以来在您的远程站点上已创建了一些新分支,则git将获得其新引用以及所有所需的祖先。
示例:
在您的本地存储库上
A---B---C---D <<< master, origin/master
在完成工作的远程“来源”上(一个新的分支,并且master
已经完成)
A---B---C---D---G <<< master
\
\
E---F <<< new-feature
如果此时进行获取,您将获得一个新的引用new-feature
(可以用git branch -r
进行验证),origin/master
将被更新为指向G,但是不是 master
,它将保持不变。
G <<< origin/master
/
/
A---B---C---D <<< master
\
\
E---F <<< origin/new-feature
然后,它还允许您在 之前检查这些新更改,以确定是否以及如何将它们集成到本地工作中。