首页 > 解决方案 > Git:为什么在我全新的分支中会出现另一个分支的文件?

问题描述

我在一个分支上工作并将其推送到 Github 并创建了一个 Pull Request。我注意到那里有一堆来自另一个分支的文件。

所以,我关闭了 PR,检查了我的 master 分支,从 master 更新它并创建了一个全新的分支。在触摸我运行git status的任何文件之前,可以预见地没有返回任何更改。然后,作为一个实验,我将这个空分支推送到 Github 上的 master 并创建了一个新的 PR。PR 附有相同的额外文件。

有人会知道发生了什么吗?为什么来自另一个分支的文件会附加到我的新分支?

我采取的步骤:

git checkout master
git pull origin master
git checkout -b new-branch
git status //nothing here
git push origin new-branch

//open Github, create PR from new branch, see that it has a bunch of files in it already

标签: gitgithub

解决方案


可能你master领先 origin/master

也就是说,紧随其后:

git checkout master
git pull origin master

如果你运行:

git log --decorate --oneline --graph --boundary origin/master...master

你得到什么作为输出?(注意这里的三个点,虽然两个点会得到相似的信息。)如果这里出现了一些东西,你得到的结果可能是预期的。您还可以运行:

git rev-list --count origin/master..master

(这次注意两个点);如果输出不为零,那么所有这些都是有道理的。

git checkout -b new-branch

这将创建new-branch指向与您的(常规的、本地的)分支名称相同的提交master的新名称。您可能想要一个指向与origin/master. 如果origin/master正在选择与 不同的(较旧的)提交master,则您在此处选择了错误的提交。

git status //nothing here

由于您刚刚创建new-branch,因此这里没有什么值得报告的内容。

git push origin new-branch

这会让你的 Git 在origin(在 GitHub 上)调用 Git,并要求他们创建他们的名字branch,以便它选择与你的名字相同的提交branch。如果那个提交在他们master之前origin/master——你的——并且你现在提出了一个拉取请求,那个拉取请求将包含你的提交master,而他们master没有。


推荐阅读