GitHub - 拉取请求 - 合并

3

我正在使用GitHub网站提交合并请求(例如,development-Feature -> development)。有些情况下会出现冲突,并告诉我无法自动合并,请运行以下命令:

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

我运行此命令时,在本地收到以下结果:
merge made by the 'recursive' strategy

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

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

谢谢。


你可能想要更改问题标题以更好地描述你的问题 - Stevoisiak
1个回答

1

你正在相反的方向上操作。你应该将开发分支合并到功能分支中。

你本地的 development 分支仍然是旧版本。你需要手动更新它。

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

现在,在执行 fetch 命令之后,你可以检出你的 development 分支,你应该会看到一个“落后”的消息。

现在你需要在 development 分支上键入 git pull origin development 来实际从服务器获取数据。

回到你的功能分支,执行 git merge development。你将得到 Github 所说的冲突。解决它们,提交并推送。Github 然后允许你合并。

简而言之:

  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

请注意,OP 需要在问题中执行 git merge 之前将 development 重置。 - Code-Apprentice
我知道这是分支的“标准”方式,但我们做得有些不同。我们尽量保持我们的特性分支尽可能干净。这样我们就可以随时拥有一个稳定的发布分支。例如,在传统方法中,如果featureA和featureB被合并到开发分支(首先进行反向合并),然后我们发现featureB存在问题,我们的发布将被暂停直到问题解决。而采用我们的方法,我们可以随时部署feature A。 - user472292
除了“进程”讨论之外,我更好奇GitHub如何处理合并。你有什么见解吗?我的主要问题是为什么我的本地git会自动合并,但GitHub却不会? - user472292
@user472292,你本地的git仓库与远程仓库不同步,它并不是“自动”的。另外,回答你关于稳定版本分支的问题,你需要一个额外的分支...用于发布!基本上,你将拥有一个发布分支、开发分支和功能分支。http://nvie.com/posts/a-successful-git-branching-model/ - wsalame
@wsalame - 我们有开发、发布和功能分支。问题在于我们不想在主干(开发和发布)之间合并,因为经常会出现已合并到开发中但未通过测试的功能(我们不想拖延发布)。此外,我的本地git是最新的(与origin相同)。所以我的主要问题是为什么我的本地git会自动合并(使用递归策略),但GitHub(网站)却不会。 - user472292

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接