2016-09-22 47 views
-1

我是使用GIT的新手,我阅读了文档指南,但似乎无法将我的头围绕在一件事上。为什么我必须在git中将git pull起源<branch-name>?

假设github源代码包含两个分支,master和foobar。 现在,当我在我的系统上执行git branch时,它显示了两个分支的名称,这意味着我的系统上都有分支。

然而,当我做了git checkout foobar,然后做git pull,没有真正发生,而不是混帐告诉我,

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

git pull <remote> <branch> 

如果要设置这个分支跟踪信息,你可以这样写:

git branch --set-upstream-to=origin/<branch> foobar 

`

只有当我执行git pull origin foobar的文件修改,并根据修改了什么已在GitHub上更新。为什么会发生?我在哪里做错git pull。 AFAIK,我认为做git pull会更新我当前的分支到最新的代码提交。

回答

0

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

从我对git的使用经验来看,除非你从GUI开始,否则你会觉得很沮丧,就像sourcetree一样。

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

1

听起来好像你已经创建了一个本地分支foobar,另外你的仓库中还有一个分支,也叫做foobar。尽管名称相同,但这些分支尚未链接。

如果你没有一个本地分支foobar,然后git checkout foobar成为git checkout -b foobar --track origin/foobar

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

要解决这个问题,你可以执行命令让你运行 - 这只是在事后设置上游分支。请注意,在大多数情况下,这是一个坏主意(因为原始结帐命令应该正在做)。但是,在你的情况下,你似乎创建了两个单独的但(实质上)相同的分支。

相关问题