2014-10-07 98 views

回答

18

git status告诉你关于你的工作目录树的状态和你指数(其中上演改变生活)对当前分支相对于最新提交。您看到的输出意味着磁盘上的文件与您分支上的最新提交完全匹配。也就是说,没有什么可以提交的。

来自GitHub的消息不是约承诺,但约合并。 GitHub想为您提供一个单击方法来将此分支合并到您的master分支中,但它不能,因为合并会导致冲突。由于GitHub无法帮助您通过网站解决冲突,因此它会要求您在自己的计算机上解决它们。

处理这种情况的最佳方法是将当前主分支合并到您的主题分支本地然后将结果推送到GitHub。要做到这一点,做到以下几点:(我假设GitHub的远程调用origin它通常是,你可能知道,如果它不是。)

$ git checkout pr12 # If you're not already on pr12 
$ git fetch origin 
$ git merge origin/master 

首先,我们做当然,我们是在正确的分支。然后我们确保我们拥有来自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会注意到,并给你一个绿色的“合并”按钮。

+0

在我做了git merge origin/master几乎每个文件都说“both added”和“new file”。 – Nathan 2014-10-07 17:32:27

+0

这很奇怪。 Git告诉你,自从'origin/master'和'pr12'分歧的时候,两个分支都添加了这些文件。你可以通过'git log --graph --oneline origin/master pr12'找到它们在视觉上的分歧。该命令的输出是否与您期望这两个分支的历史看起来一样? – Peeja 2014-10-07 17:44:58

+0

所以我有点明白了。但现在所有从原始回购合并分叉回购出现在分支。当我尝试恢复那个提交时,它说了一些关于-m开关的内容。 – Nathan 2014-10-07 18:56:25

5

当我遇到此消息时,这是因为我的分叉是一个特定的回购背后的原始。在我的具体情况下,我分叉的回购是pydata/pandas

我不得不configure a remote for my fork做:

> git remote add upstream [email protected]:original_user/original_repo.git 
> git remote -v 
origin [email protected]:some_user/pandas.git (fetch) 
origin [email protected]:some_user/pandas.git (push) 
upstream [email protected]:pydata/pandas.git (fetch) 
upstream [email protected]thub.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 

最后推合并r epo回github:

> git push