为什么我必须在git中使用git pull origin <branch-name>?

时间:2016-09-22 04:25:57

标签: git github

我是使用GIT的新手,我阅读了文档指南,但似乎无法解决一件事。

假设github源包含两个分支,master和foobar。 现在,当我在我的系统上执行 NSString *customURL = @"appName://"; if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; } 时,它会显示两个分支的名称,这意味着我的系统上有两个分支。

但是,当我执行git branch然后执行git checkout foobar时,没有任何事情发生,而git告诉我,

`当前分支没有跟踪信息。 请指定要合并的分支。 有关详细信息,请参阅git-pull(1)。

git pull

如果您希望为此分支设置跟踪信息,可以使用以下命令设置:

git pull <remote> <branch>

`

只有当我执行git branch --set-upstream-to=origin/<branch> foobar 时,根据GitHub上更新的内容修改和更改文件。为什么会这样?在做git pull origin foobar时我哪里出错了。 AFAIK,我认为做git pull会将我当前的分支更新为最新的代码提交。

2 个答案:

答案 0 :(得分:2)

听起来您已创建了一个本地分支foobar,另外,您的存储库中的分支也称为foobar。尽管名称相同,但这些分支尚未联系。

如果您没有本地分支foobar,则git checkout foobar会变为git checkout -b foobar --track origin/foobar

第二部分(--track origin/foobar)是你想要注意的部分。这为初始结账操作设置了远程跟踪。

要解决这个问题,你可以执行你被告知要运行的命令 - 这样就可以在事后为你设置上游分支。请注意,在大多数情况下,这是一个坏主意(因为原始结帐命令应该正在做什么)。但是,在您的情况下,您似乎创建了两个独立但(基本上)相同的分支。

答案 1 :(得分:0)

Git是一个功能强大的工具,它为用户提供了大部分功能。拉=获取+合并。如果你本地foobar本地(你检查了本地分支foobar不是远程),git会自动假设,如果有远程,它应该从中拉出? Git没有自动回答这个问题。

根据我对git的经验,除非你开始使用GUI,否则你会感到很沮丧,例如sourcetree

要夏令时,要从远程拉出,您需要指定远程分支,而不是本地,并且它会尝试将其与您当前的本地工作分支合并。