【发布时间】:2021-03-25 03:28:08
【问题描述】:
我可以通过只读权限访问承包商的 Git 存储库。我从他的服务器中拉出他的分支(smile/dev -> dev),然后将它们推回我的 GitLab 服务器上。然后,我在自定义分支 (sectronic -> origin/sectronic) 上进行修改,然后可以将他们的 smile/dev 变基或合并到我的 sectronic 分支中,如果他们这边发生了一些变化。
现在我最近向我的sectronic 分支提交了一个错误修复,我从该分支导出了一个发送给我的承包商的补丁。他在他的smile/dev 分支上应用了补丁,所以现在我的树中有两个不同的提交,但都做了相同的更改(最上面的两个)。
我怎样才能摆脱这种情况?我无法删除我的分支,因为我想保留过去的修改,我不能真的很难恢复到我自己的提交,因为我本可以在此之后进行其他提交。我目前在 Git 方面不够熟练,不知道如何正确清理它。
我知道工作流程不是最理想的,实现这项工作的正确方法是使用拉/合并请求,但遗憾的是,目前在我的情况下这是不可能的。
【问题讨论】:
-
如果修改几乎相同,则将两者合并应产生最小数量的合并冲突。如果您想保持历史记录干净并对此进行跟踪,请让您的客户在他们这边进行还原提交(或在您这边执行)删除重复的错误修复使用新提交。
-
您可以交互式变基以从您的分支中删除提交。但是,目前的情况是否不好尚不清楚。这和樱桃采摘没有什么不同。为什么不保持原样?
-
@DaemonPainter 在这种情况下,他们会丢失补丁提交,因为他们不会直接包含我的提交。这是一个奇怪的工作流程,我通常在我这边提交,但他们只应用我的更改补丁并将它们提交到他们的分支上,然后我拉......
-
@matt 谢谢,放弃提交可能是一个不错的解决方案。保持原样是指将微笑/开发分支合并到我的分支中?我只是不认为在树中有两个重复的提交是不干净的,这做同样的事情。也许我的想法是错误的?
-
“我只是不认为在 tre 树中有两个重复的提交是干净的”我说这是一个见仁见智的问题。在正常生活中,由于诸如樱桃采摘之类的事情,这种情况总是会发生。因此,除非这会在以后的合并中造成麻烦,否则为什么不保持原样呢?这就是您的流程的工作方式,提交被复制。
标签: git merge duplicates patch