git branch
告诉我,我在主上。
我写了git checkout -b newbranch
。
git branch
向我显示我在新创建的分支 newbranch 上。
我写git pull
并收到以下错误:
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
并获得分支 master 和 newbranch 之间不同的百万个文件(使用我的完整控制台,所以我看不到它的开头错误),结尾如下:
Please move or remove them before you can merge.
Aborting
我不明白为什么分支 newbranch 不是 master 的精确副本。从我在创建新分支时读到的内容开始,它与我所在分支的提交相同。我只想让git pull
确保所有文件与master上的文件完全相同。如果新分支不是从中复制的分支的完整副本,我就不知道所有文件的取自何处。
修改 正如大家所提到的,问题是我的本地主人与远程主人不同。所以我不得不这样做:
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 :(得分: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
答案 1 :(得分: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)
您有很多差异的原因可能是您的主分支与 origin / master 不是最新的。您的分支 newbranch 确实应该是一个精确的&#34;副本&#34;您的主分支。 git diff master
应为空。