GitLab合并请求显示了主服务器中的旧更改

时间:2018-11-15 22:00:41

标签: git merge gitlab

我正在将变更从分支合并到我们团队在GitLab上的主仓库中。

奇怪的是,连同我的提交,合并是在说其他文件已更改,而我尚未处理过的文件。并且它显示的更改已经在我要合并的上游主服务器中已经存在。什么?

这是我的工作流程:(步骤9是我遇到麻烦的地方。)

  1. 来自本地主服务器,从上游主服务器重新部署
  2. 从本地主站点创建功能分支
  3. 结帐功能分支。
  4. 在我的功能分支上做很多工作,经常提交并推送到我的fork的功能分支。
  5. 创建合并请求,并将fork的功能分支合并到上游主服务器中。
  6. 检出本地主服务器并从上游主服务器重新定位
  7. 从本地主节点检出本地功能分支并重新设置基准(如果需要)(以引入队友可能在其他文件中所做的任何更改)。
  8. 在本地执行更多工作,经常提交并推送到我的fork的功能分支。
  9. 从fork功能分支创建到上游母版的合并请求,显示对其他文件的更改,上游母版中已经存在的更改

逐行进行比较,将“更改”与上游其他文件中的更改进行比较,我可以看到上游主机中已经存在这些更改。

为什么git会这样做?这真让人感到不安,就像我做错了事,而且每次遇到这个怪异现象时,我都会默认将这些更改默认合并,因为这些其他文件是我的队友一起工作-我不是100%确信我的前叉功能确实具有最新最好的代码。

我在做什么错?

谢谢!

1 个答案:

答案 0 :(得分:2)

据我所知,造成混乱的是您的fork分支(又称为步骤7)中master的重新部署。
通过重新基准化,您可以放下所有合并并更改提交哈希,从而创建新的提交。

您可以:

  • git merge而不是在步骤7中重新定位

  • git rebase --preserve-merges

为完全理解其含义,我建议阅读对该问题的详细记录的答案:What exactly does git's "rebase --preserve-merges" do (and why?)