git status
告诉你你的状态工作目录树和你的index(其中暂存更改实时)相对于当前分支上的最新提交。您看到的输出意味着磁盘上的文件与分支上的最新提交完全匹配。也就是说,“没有什么可承诺的”。
来自 GitHub 的消息不是关于承诺,但关于merging。 GitHub 希望为您提供一种一键式的方法来将该分支合并到您的master
分支,但它不能,因为合并会导致冲突。由于 GitHub 无法帮助您通过网站解决冲突,因此它要求您在自己的计算机上解决冲突。
处理这种情况的最好方法是将当前的 master 分支合并到本地的主题分支中然后将结果推送到GitHub。为此,请执行以下操作:
$ git checkout pr12 # If you're not already on pr12
$ git fetch origin
$ git merge origin/master
(我假设 GitHub 远程被称为origin
。通常是这样,您可能知道是否不是。)
首先我们确保我们在正确的分支上。然后我们确保我们有最新的代码master
GitHub 存储库上的分支。然后我们将该代码合并到我们的pr12
branch.
记住: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 会注意到这一点,并为您提供一个绿色的“合并”按钮。