git如何拉<remote>工作</remote>

时间:2014-02-22 16:26:42

标签: git

假设我有一个locol git repo和一个名为hub的远程仓库。还假设我的本地仓库有branch1branch2,远程仓库有branch1branch2branch3

如果我打电话

git pull hub 

这会自动将hub/branch1branch1hub/branch2branch2合并,还是仅将相应的远程分支合并到我当前签出的分支中?它还会自动创建一个新的本地branch3吗?

4 个答案:

答案 0 :(得分:3)

问题1

  

这会自动将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。

问题2

  

它还会自动创建一个新的本地分支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 hubgit 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 mergehub/branch1合并到branch1