当他告诉我他已经把他们推了起来并且他们在回购中的位置时,我很难尝试让我的同事获得新标签。直到我使用git fetch时才能获得新标签,并且实际上告诉我有关创建新分支的信息。我知道git pull基本上是git fetch& git merge所以我想知道为什么它没有得到最新的变化。以下是两种情况:
git pull origin dev
From ******.****.*****/*******
* branch dev -> FETCH_HEAD
Already up-to-date.
git fetch
From ****.****.com:*******/*******
ae06d29..958f332 master -> origin/master
* [new branch] task-Q -> origin/task-Q
* [new tag] demo_5-21 -> demo_5-21
* [new tag] demo_5_27 -> demo_5_27
我错过了什么吗?
答案 0 :(得分:2)
查看git pull
的概要,我们看到:
'git pull' [options] [<repository> [<refspec>...]]
当您运行git pull origin dev
时,您指定要从远程dev
提取refspec origin
。由于您专门要求dev
分支,因此不会提取其他分支或标记。
相反,请尝试git pull --all
。
答案 1 :(得分:1)
是:'git pull'是'git fetch; git merge”。
否:'git fetch --all'将不会获取标签。
您的git pull origin dev
仅获取了远程dev分支。如果您输入了git pull
或git pull origin
,则将根据配置获得新的分支。所获取的内容受三件事控制,您可能利用了最后一件事:
命令行:尽管git pull --tags
有效,但不一定会获取跟踪分支... git会提醒您使用git fetch --tags
。这样可以获取您同事的标签,但不会获取任何分支。
$ git pull --tags
. . .
Fetching tags only, you probably meant:
git fetch --tags
远程/分支获取配置:使用裸git fetch
或git fetch origin
,远程和分支配置控制行为。这些没有发挥作用:
$ git config remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*
$ git config --get-regexp 'branch.master*'
branch.master.remote origin
branch.master.merge refs/heads/master
上游分支/标记历史记录:根据git fetch文档的第二段
默认情况下,任何指向要获取的历史记录的标记都是 也拿来效果是获取指向分支的标签 您感兴趣。
这意味着当您的同事在其历史记录中推送带有新标签的分支时,您的git fetch
得到了新分支和新标签。