为什么创建git branch不会复制所有文件?

use*_*er1 0 git git-pull git-branch

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
Run Code Online (Sandbox Code Playgroud)

我想这是因为我无法从我刚刚创建的分支中拉出来.所以我编写git pull origin master并获得了一百万个不同分支masternewbranch的文件(使用我的完整控制台,所以我看不到错误的开头),结果如下:

Please move or remove them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)

我不明白为什么分支newbranch不是master的精确副本.从我在创建新分支时读到的内容开始,它与我所在分支的提交相同.我只想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
Run Code Online (Sandbox Code Playgroud)

use*_*011 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
Run Code Online (Sandbox Code Playgroud)

您还希望让本地主人同步 origin/master

git checkout master
git pull # and solve merge conflicts
Run Code Online (Sandbox Code Playgroud)