假设我有一个locol git repo和一个名为hub
的远程仓库。还假设我的本地仓库有branch1
和branch2
,远程仓库有branch1
,branch2
和branch3
。
如果我打电话
git pull hub
这会自动将hub/branch1
与branch1
和hub/branch2
与branch2
合并,还是仅将相应的远程分支合并到我当前签出的分支中?它还会自动创建一个新的本地branch3
吗?
答案 0 :(得分:3)
这会自动将hub / branch1与branch1和hub / branch2与branch2合并,还是仅将相应的远程分支合并到我当前签出的分支中?
后者。实际上它甚至有点复杂,它将从当前分支有效跟踪的远程分支中拉出来。
假设您希望本地branch1
跟踪中心branch1
git branch --set-upstream-to=hub/branch1 branch1
但没有什么可以阻止你跟踪另一个远程分支(警告:这会让你的大脑受伤)
git branch --set-upstream-to=hub/branch2 branch1
本地branch1
现在跟踪远程branch2
:D。
它还会自动创建一个新的本地分支3吗?
没有。这必须明确地完成。
如果您要签出新分支,您还可以默认跟踪远程分支:
git checkout -t hub/branch3
这将创建一个跟踪远程branch3
的本地branch3
。
但是如果我想要 git来拉动所有分支呢?
git pull --all
将使所有本地分支机构跟踪远程分支机构更新。但它实际上不会检查新的远程分支。
答案 1 :(得分:2)
man git-pull
在'DESCRIPTION'的第一句中说:
“将来自远程存储库的更改合并到当前分支中。”
第一个问题:它只会将相应的远程分支合并到您当前签出的分支中。
第二个问题:不会自动创建分支。
答案 2 :(得分:0)
如果您当前的分支已经跟踪远程分支,那么后者将合并到前者。它不会创建任何本地分支。
命令的完整形式如下:
git pull remote remote-branch
它总是合并到您当前检出的本地分支。
如果CURRENT分支已经在跟踪远程分支,则可以跳过最后一个参数。
例如,如果您当前检查的本地分支是branch1
,并且您已经完成了
git push hub branch1
过去,情况就是这样。所以
git pull hub
实际上意味着
git pull hub branch1
如果您想查看远程分支的位置,而不需要合并任何内容
git fetch
答案 3 :(得分:0)
git pull hub
相当于git fetch hub
和git merge
的组合。
git fetch hub
将更新所有hub/*
个分支。 git merge
会将hub/branch1
合并到branch1
。 (假设您目前在branch1上。)
没有其他事情可做。没有其他地方分支机构受到影响。
更准确一点......
git config remote.hub.fetch
将显示git fetch hub
确切更新的内容。它可能配置为
+refs/heads/*:refs/remotes/hub/*
这告诉git fetc
h更新hub/*
。
git merge
将合并配置的上游分支。您可以使用git branch -vv
显示已配置的上游分支。这可能会显示类似
* branch1 1234567 [hub/branch1] message
这告诉git merge
将hub/branch1
合并到branch1