2016-09-16 130 views
3

我正在使用GitHub网站提交请求(例如,开发 - 特性 - >开发)。有些情况下,有冲突,它告诉我,它不能自动合并,并运行以下命令:GitHub - 合并请求 - 合并

git checkout development 
git merge development-Feature 
git push origin development 

当我在本地运行此命令,我得到:

merge made by the 'recursive' strategy 

在本地它没有任何冲突(它会自动合并我的冲突文件)。

我的问题是,GitHub(网站)是否检查任何冲突(即使它们可以自动合并),如果有任何冲突,就放弃?我试图找出GitHub在执行pull请求时使用的命令,但我似乎无法找到它。

谢谢,

+0

您可能需要改变问题的标题,以更好地描述您的问题 –

回答

1

你这样做的方式相反。您应该将功能分支中的开发合并到一起。

您的本地副本development仍处于“旧版”版本。您必须手动更新它。

如果你从任何分支输入git fetch -p,它将从服务器下载有关分支的“元数据”,换句话说,你的本地git将能够知道你没有更新最新版本。 -p参数将从本地计算机中删除不再在github上的分支的元数据。

现在执行fetch命令后,您可以检出您的开发分支,并且您应该看到一条消息,指出您“落后”。

现在您需要输入git pull origin development(同时在开发分支上)才能真正从服务器获取数据。

回到你的功能分支,并做一个git merge development。你会得到github正在讨论的冲突。修复它们,提交并推送。然后Github上,您就可以合并

TL;博士

  1. git checkout development
  2. git pull origin development
  3. git checkout development-Feature
  4. git merge development
  5. 解决冲突手动
  6. git commit
  7. git push origin development-Feature
+0

注意的是,OP需要development'复位'之前的'混帐merge'的问题进行。 –

+0

我知道这是做分支的“标准”方式,但我们做的有点不同。我们尽量保持我们的功能分支尽可能干净。这样我们就可以随时拥有一个稳定的发布分支。例如,在传统方法中,如果featureA和featureB被合并到开发中(先反向合并),那么我们发现featureB存在一个问题,我们的发布将被搁置,直到该问题得到解决。通过我们的方法,我们可以随时部署功能A. – user472292

+0

除了“过程”讨论之外,我对GitHub如何处理合并更加好奇。你对此有所了解吗?我的主要问题是为什么我的本地git自动合并,但GitHub不? – user472292