Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github告诉一个用户存在冲突,而不是另一个用户_Git_Github - Fatal编程技术网

Github告诉一个用户存在冲突,而不是另一个用户

Github告诉一个用户存在冲突,而不是另一个用户,git,github,Git,Github,我们在Github上有一个存储库。一个用户创建了一个分支,将其签入Github,并创建了一个拉请求。当他登录到Github并查看PR时,底部有一条消息说没有冲突,可以合并此PR。有一个绿色按钮来做这件事 当我登录Github并查看同一个PR时,我看到一条不同的消息:“由于冲突,无法重新设置此分支的基础基础。由于在重新应用来自头分支的单个提交时遇到冲突,无法自动在基础分支上重新设置此分支提交的基础。” 为什么我们看不到同样的东西 我们的登录和一些配置选项有什么不同吗 他在IDE中可能有不同的选项,

我们在Github上有一个存储库。一个用户创建了一个分支,将其签入Github,并创建了一个拉请求。当他登录到Github并查看PR时,底部有一条消息说没有冲突,可以合并此PR。有一个绿色按钮来做这件事

当我登录Github并查看同一个PR时,我看到一条不同的消息:“由于冲突,无法重新设置此分支的基础基础。由于在重新应用来自头分支的单个提交时遇到冲突,无法自动在基础分支上重新设置此分支提交的基础。”

为什么我们看不到同样的东西

我们的登录和一些配置选项有什么不同吗

他在IDE中可能有不同的选项,但这不应该有什么区别。Github上只有一个版本的回购协议。他在Windows上,我在Mac上,但这也没什么区别


在我尝试在本地重新设定基准之前,有没有办法让我知道冲突到底是什么

如果一个版本正在添加作为冲突生成器的代码,而另一个版本又将其收回,则可能会出现重定基础冲突,并且不会出现合并冲突。如果合并,该分支将不会有冲突的代码。。。但是,如果一个版本一个版本地修改(如在重基中),则必须处理两次冲突。

如果一个版本添加了冲突生成器代码,然后另一个版本将其收回,则可能会出现重基冲突,而不会出现合并冲突。如果合并,该分支将不会有冲突的代码。。。但是,如果你一次又一次地修改(如在重基中),你将不得不处理两次冲突。

正如问题下面的评论所指出的,这是因为GitHub提供给没有问题的人合并提交,但对你来说,GitHub提供给重基提交。有时,合并很容易,而重新调整则不容易

下面是一个提交系列的简单示例,它可以轻松合并,但不能重定基准。首先,让我们绘制提交的实际图表:

...--G--H------L   <-- master
         \
          I--J--K   <-- branch
在commit
L
中,我们将第2行更改为
这是第2行。因此
H
-vs-
L
更改了文件
makeconflict
的第2行(并且不做其他更改)

同时,在commit
I
中,我们删除了文件
makeconflict
的第2行。在commit
J
中,我们对一些有用的文件进行了有用的更改,而不涉及file
makeconflict
。在commit
K
中,我们将文件
makeconflict
的第2行放回原处

如果我们尝试将
合并
提交
K
(分支的尖端
分支
)到
主控
,Git将
H
L
进行比较,并发现
makeconflict
第2行已更改。它将
H
K
进行比较:这表示我们必须从
H
更改文件
makeconflict
的第2行,以保留在
master
中所做的更改。然后将
H
K
进行比较,看看我们做了什么。由于我们将第2行放回了
K
,Git唯一需要与
makeconflict
的更改相结合的更改就是对重要文件的更改。因此,合并进展顺利,更改了重要文件,我们得到:

...--G--H------L--M   <-- master (HEAD)
         \       /
          I--J--K   <-- branch
试图将
I
复制到
I'
——从
H
复制到
I
的区别在于我们必须删除文件
makeconflict
的第2行,而
H
L
之间的区别在于我们必须更改文件
makeconflict
的第2行。这两种不同的变化相互冲突。我们必须选择要进行的更改:将
2
替换为
2
,还是完全删除该行

如果我们完全删除需要手动干预的行,而GitHub不会通过web UI执行此操作–我们可以继续将
J
复制到
J'
K
复制到
K'

                 I'-J'-K'   <-- branch (HEAD)
                /
...--G--H------L   <-- master
         \
          I--J--K   [abandoned]
当然,当在
I'
处理合并冲突时,我们可以选择放弃
I
的更改,保留
L
的更改。最后,我们只需完全跳过复制
I
。当我们开始复制commit
K
来生成
K'
时,我们通常会遇到另一个合并冲突,尽管有时候Git会意识到也不需要commit
K
。如果我们正确处理冲突,我们也将删除
K

                 J'  <-- branch (HEAD)
                /
...--G--H------L   <-- master
         \
          I--J--K   [abandoned]

J'正如问题下面的评论中所指出的,这是因为GitHub为那些认为没有问题的人提供了合并提交的服务,但对你来说,GitHub提供了重新设置提交基础的服务。有时,合并很容易,而重新调整则不容易

下面是一个提交系列的简单示例,它可以轻松合并,但不能重定基准。首先,让我们绘制提交的实际图表:

...--G--H------L   <-- master
         \
          I--J--K   <-- branch
在commit
L
中,我们将第2行更改为
这是第2行。因此
H
-vs-
L
更改了文件
makeconflict
的第2行(并且不做其他更改)

同时,在commit
I
中,我们删除了文件
makeconflict
的第2行。在commit
J
中,我们对一些有用的文件进行了有用的更改,而不涉及file
makeconflict
。在commit
K
中,我们将文件
makeconflict
的第2行放回原处

如果我们尝试将
合并
提交
K
(分支的尖端
分支
)到
主控
,Git将
H
L
进行比较,并发现
makeconflict
第2行已更改。它将
H
K
进行比较:这表示我们必须从
H
更改文件
makeconflict
的第2行,以保留在
master
中所做的更改。然后将
H
K进行比较...--G--H------L--I'-J'-K'   <-- branch, master (HEAD)
         \
          I--J--K   [abandoned]
                 J'  <-- branch (HEAD)
                /
...--G--H------L   <-- master
         \
          I--J--K   [abandoned]