我在使用PR时遇到了这个错误,但是当我git status
时它显示为nothing to commit, working directory clean
。
那是PR的分支机构。
On branch pr12
nothing to commit, working directory clean
答案 0 :(得分:20)
git status
告诉您工作目录树的状态以及相对于当前分支上最新提交的索引(暂存更改) 。您看到的输出意味着磁盘上的文件与分支上的最新提交完全匹配。也就是说,“无需承诺”。
来自GitHub的消息不是关于提交,而是关于合并。 GitHub希望为您提供一键式方法将此分支合并到您的master
分支中,但它不能,因为该合并会导致冲突。由于GitHub无法通过网站帮助您解决冲突,因此它会要求您在自己的计算机上解决冲突。
处理这种情况的最佳方法是将当前主分支合并到本地主题分支,然后将结果推送到GitHub。为此,请执行以下操作:
$ git checkout pr12 # If you're not already on pr12
$ git fetch origin
$ git merge origin/master
(我假设GitHub遥控器被称为origin
。它通常是,你可能知道它是不是。)
首先,我们确保我们在正确的分支上。然后我们确保我们拥有GitHub仓库中master
分支的最新代码。然后我们将该代码合并到我们的pr12
分支。
请记住:git fetch origin
更新我们的本地origin/master
与GitHub的master
相同,但它不会触及名为master
的本地分支。我们必须检查我们的master
分支以对其进行更改。相反,我们只是更新我们对GitHub上的内容的想法(origin/master
)并将其合并到我们的pr12
中。
运行merge
命令时,您会看到冲突。那些代表git(和GitHub)无法自动生成的决定。编辑这些文件,使它们成为您希望它们结束的方式。然后:
$ git add each/file.txt that/had/conflicts.conf
$ git commit # Your editor will open with a pre-filled
# commit message. Just save and close the file.
$ git push origin pr12
也就是说,我们添加了我们修复的文件版本,然后完成了我们从git merge
开始的合并提交。最后,我们使用新的合并提交将分支推送到GitHub。
由于我们已经解决了冲突,因此这个分支应该很容易以另一种方式合并到master
中。 GitHub会注意到这一点,并给你一个绿色的“合并”按钮。
答案 1 :(得分:8)
当我遇到此消息时,这是因为我的特定仓库的 fork 落后于原始版本。在我的特殊情况下,我分叉的回购是pydata/pandas
。
我必须做configure a remote for my fork:
> git remote add upstream git@github.com:original_user/original_repo.git
> git remote -v
origin git@github.com:some_user/pandas.git (fetch)
origin git@github.com:some_user/pandas.git (push)
upstream git@github.com:pydata/pandas.git (fetch)
upstream git@github.com:pydata/pandas.git (push)
(注意:git remote add upstream
是一种git的说法“添加一个名为”上游的遥控器“。这个名字可以是任何东西。)
然后我fetched the latest commits来自原始仓库:
> git fetch upstream
> git checkout master # Just in case you're not already on master
> git merge upstream/master
最后将合并后的repo推回到github:
> git push