如果我这样做:
git pull
git 回复:
Already up to date.
但如果我这样做:
git pull myRemote myBranch
git 回复:
From https://github.com/myUserName/myRemote
* branch myBranch -> FETCH_HEAD
Already up to date.
(根据 gitbranch -vv
myRemote 和 myBranch 是默认值。)
问题:
- git 在这一部分试图告诉我什么
来自 https://github.com/myUserName/myRemote
* 分支 myBranch -> FETCH_HEAD
? - 如果我只是
git pull
,为什么 git 不提供此反馈?
(看起来 git 想要告诉我它是从 myRemote > myBranch pull 的,但在 git pull myRemote myBranch
的情况下,反馈似乎相当多余,而在 git pull
的情况下> 它实际上可能有用..)
最佳答案
首先,这些消息是由 Git pull 的“fetch”部分提供给您的。如果您使用 git fetch
,您会得到相同的结果。
当你这样做时:
git pull myRemote myBranch
…您实际上并未将远程 myRemote 获取到本地 myBranch。
myRemote 是远程存储库的名称,myBranch 是您想要的远程分支的名称从那里取回来。后面的参数实际上是一个refspec ,它允许您指定与可选的本地同系物关联的源(远程)引用。
您还可以使用通配符 *
和/或指定由空格分隔的多个引用规范,这使您能够一次性获取多个引用,因此会显示明确的消息,准确地告诉您每个引用会发生什么其中。
例如:
git fetch origin master:my_cutty_local_master
…将获取实际与 origin/master
相关的所有内容,然后在其之上创建一个名为 my_cutty_local_master
的本地分支。
所以 Git 在这里告诉您的是,服务器 myRemote
上 myBranch
的远程状态(实际上是:myRemote/myBranch
)是本地获取,然后将 HEAD
放置在其顶部。实际上不是 HEAD
,而是 FETCH_HEAD
,它只是为了这个目的而临时存在的。
紧接着,git pull
执行 merge 过程,如果允许且可能的话,通常会以快进更新操作结束,否则会进行常规 merge 并解决冲突.
Why does git not give this feedback if I do just git pull?
因为在不带参数的情况下执行 git pull 时,只能获取一个引用规范,其中源和目标都是已知且隐式的:您更新当前分支,因此这里不需要额外的精度.
您可能还想使用 gitbranch -vva 来获取远程分支的名称。
关于git pull 响应消息含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75656418/