Git &引用;此拉取请求包含必须解决的合并冲突。”;

Git &引用;此拉取请求包含必须解决的合并冲突。”;,git,github,Git,Github,我在PR中遇到了这个错误,但当我git status时,它会显示无需提交,工作目录清理 那是公关部的分支机构 On branch pr12 nothing to commit, working directory clean git status告诉您与当前分支上的最新提交相关的工作目录树的状态和索引的状态(其中存在阶段性更改)。您看到的输出意味着磁盘上的文件与分支上的最新提交完全匹配。也就是说,没有什么可承诺的 来自GitHub的消息不是关于提交,而是关于合并。GitHub希望为您提供一种一

我在PR中遇到了这个错误,但当我
git status
时,它会显示
无需提交,工作目录清理

那是公关部的分支机构

On branch pr12
nothing to commit, working directory clean

git status
告诉您与当前分支上的最新提交相关的工作目录树的状态索引的状态(其中存在阶段性更改)。您看到的输出意味着磁盘上的文件与分支上的最新提交完全匹配。也就是说,没有什么可承诺的

来自GitHub的消息不是关于提交,而是关于合并。GitHub希望为您提供一种一键式方法,将此分支合并到您的
主分支中,但它不能,因为这种合并会导致冲突。由于GitHub无法通过网站帮助您解决冲突,它要求您在自己的机器上解决冲突

处理这种情况的最佳方法是将当前主分支本地合并到主题分支中,然后将结果推送到GitHub。为此,请执行以下操作:

$ git checkout pr12  # If you're not already on pr12
$ git fetch origin
$ git merge origin/master
(我假设GitHub remote被称为
origin
。它通常是,您可能知道它是否是。)

首先,我们要确保我们在正确的分支上。然后,我们确保从GitHub repo上的
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
也就是说,我们添加我们修复的文件的版本,然后完成我们从
gitmerge
开始的合并提交。最后,我们将带有新合并提交的分支推送到GitHub


既然我们已经解决了冲突,那么以另一种方式将该分支合并到
master
中应该很简单。GitHub会注意到这一点,并给您一个绿色的“合并”按钮。

当我遇到这条消息时,是因为我的特定回购分支在原始的后面。在我的特殊情况下,我提出的回购协议是
pydata/pandas

我必须这样做:

> 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表示“add a remote”的方式,称为“upstream”。名称可以是任何内容。)

然后,我从原始回购协议中获得:

> git fetch upstream
> git checkout master # Just in case you're not already on master
> git merge upstream/master
最后将合并后的回购协议推回到github:

> git push

在我完成git合并origin/master之后,几乎每个文件都会显示“添加”和“新文件””“真奇怪。Git告诉您,自从it时代
origin/master
pr12
出现分歧以来,这两个分支都添加了这些文件。您可以使用
git log--graph--oneline origin/master pr12
直观地找到它们的分歧点。该命令的输出是否与您期望的这两个分支的历史类似?因此,我得到了一些信息。但现在,分支机构中出现了与叉式回购合并的原始回购协议的所有内容。当我试图还原一个提交时,它表示了-m开关。这里的“repo”是指“分支”吗?您希望原始(
master
)分支中的所有内容都位于
pr12
中。这意味着它是最新的。(关于
-m
开关的错误是因为您试图还原合并提交并返回其父级,但合并提交有多个父级:您合并在一起的提交。
-m
开关允许您选择要还原到的父级。)谢谢!我已经搜索了一段时间,这解决了我的问题