2016-06-28 66 views
0

git branch告诉我我在主人。 我写git checkout -b newbranchgit branch告诉我,我在新创建的分支newbranch。 我写git pull,并出现以下错误:为什么创建git分支不会复制所有文件?

There is no tracking information for the current branch. 
Please specify which branch you want to merge with. 
See git-pull(1) for details. 

    git pull <remote> <branch> 

If you wish to set tracking information for this branch you can do so with: 

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

我想这是因为我无法从我刚刚创建了一个分支拉。所以我写git pull origin master并获得一百万文件分支newbranch之间差异有以下结局(以我的全控制台,所以我不能看到错误的开始):

Please move or remove them before you can merge. 
Aborting 

我不明白为什么分支newbranch不是主人的确切副本。从我读的时候,当我创建一个新的分支时,它从我所处的分支开始。我只是想让git pull确保所有文件都与主文件完全相同。如果新分支不是从其复制的分支的确切副本,我不知道所有文件都来自哪里。

编辑: 大家都提到,问题是我的本地主人不同于远程主人。所以,我不得不这样做:

git checkout master 
git branch -d newbranch 
git fetch --all 
# change permision issues with chmod and chown 
git reset --hard origin/master 
git checkout -b newbranch 
+0

你创造你的'newbranch'你的*本地*主分支。如果稍后在执行'git pull origin master'时收到更改,那么显然您的本地主分支已过时。 – poke

回答

5

git最重要的属性之一是git是一个分布式版本控制系统。这意味着您的本地分支不需要与远程分支同步。

在您的具体情况下,您的机器上有master。当你做git checkout -b newbranch时,你创建了一个新的分支,它与你机器上的master相同。

但是在远程计算机上也有一个master,它的名字是origin(如果你使用的话也许是GitHub)。所以当你做git pull origin master时,你正在合并你的本地newbranch与远程origin/master而不是你本地的master。我认为你的情况是你的本地master合并冲突origin/master

你应该做的

要创建一个新的分支

git checkout -b newbranch # create local newbranch from local master 
git push --set-upstream origin newbranch # push your local newbranch to origin/newbranch 

你也想保持你的本地主同步与origin/master

git checkout master 
git pull # and solve merge conflicts 
+0

欢迎来到StackOverflow。好答案;与我所说的一致:主分公司没有及时更新产地/主人。保持良好的工作 :) –

2

如果你只是想看到的区别;考虑使用以下命令之一:

git diff master   # diff with local master branch 
git diff origin/master # diff with master on origin 
git diff master --stat # diff with local master branch (but show list of files only) 

为什么你有很多差异的原因可能是您的分支是不是最新与产地/主。你的分支newbranch确实应该是你的主分支的确切“副本”。 git diff master应该是空的。

相关问题