Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Git 如何用不同的哈希值合并两个相同的提交?_Git_Merge_Duplicates_Patch - Fatal编程技术网

Git 如何用不同的哈希值合并两个相同的提交?

Git 如何用不同的哈希值合并两个相同的提交?,git,merge,duplicates,patch,Git,Merge,Duplicates,Patch,我可以使用只读权限访问承包商的Git回购。我从他的服务器中拉出他的分支(smile/dev->dev),然后将它们推回到我的GitLab服务器上。然后我对自定义分支进行修改(sectronic->origin/sectronic),然后如果它们的分支发生了一些更改,我可以将它们的smile/dev重新基础或合并到我的sectronic分支中 现在,我最近向我的sectronic分支提交了一个错误修复,我从中导出了一个补丁,并将其发送给我的承包商。他在他的smile/dev分支上应用了补丁,所以现

我可以使用只读权限访问承包商的Git回购。我从他的服务器中拉出他的分支(
smile/dev
->
dev
),然后将它们推回到我的GitLab服务器上。然后我对自定义分支进行修改(
sectronic
->
origin/sectronic
),然后如果它们的分支发生了一些更改,我可以将它们的
smile/dev
重新基础或合并到我的
sectronic
分支中

现在,我最近向我的
sectronic
分支提交了一个错误修复,我从中导出了一个补丁,并将其发送给我的承包商。他在他的
smile/dev
分支上应用了补丁,所以现在我在树中有两个不同的提交,但都做了相同的更改(最上面的两个)

我怎样才能摆脱这种局面?我不能删除我的分支,因为我有我想要保留的过去的修改,我不能真的很难恢复到我自己的提交,因为我可以在这之后再做其他提交。我目前在Git方面还不够熟练,不知道如何正确地清理它


我知道工作流程不太理想,通过使用拉/合并请求来完成这项工作是一种合适的方式,但遗憾的是,在我的情况下,这目前不可能实现。

如果您的分支
sectronic
没有与许多人共享(例如:如果你几乎是唯一一个使用它的人,或者你和一个小团队的开发人员,你可以很容易地联系到他们),你可以重写你分支的历史记录

如果是这种情况,您可以使用rebase和force push来推动分支:

# from your 'sectronic' branch :
git checkout sectronic

# rebase on top of smile/dev :
git rebase smile/dev

# and force push :
git push --force-with-lease origin sectronic
如果分支与其他开发人员共享,那么您必须告诉他们也要更新本地工作



如果两个
F[io]引入的补丁x调制解调器通电和断电程序
是100%相同的,
git rebase
将自动识别重复提交,并将其从重写的分支中删除。

如果修改几乎相同,将两者合并将产生最小数量的合并冲突。如果希望保持历史记录干净并跟踪此情况,请您的客户机将在其一侧进行恢复提交(或在您一侧执行)使用新提交删除重复的错误修复。您可以通过交互式重新设置基础从分支中删除提交。但是,目前还不清楚当前情况是否糟糕;这与樱桃选择没有什么不同。为什么不保持原样?@DaemonPainter在这种情况下,他们将丢失补丁提交,因为他们不会直接包括我的提交。这是一个奇怪的工作流,我正常提交,但他们只应用我更改的补丁并提交到他们的分支上,然后我拉…@matt谢谢,放弃提交可能是一个很好的解决方案。保持原样意味着将微笑/dev分支合并到我的分支中?我只是认为有两个重复的co是不干净的在tre-tree中的mmits,也做了同样的事情。也许我的想法是错误的?“我只是不认为在tre-tree中有两个重复的提交是干净的”我是说,这是一个意见问题。在正常生活中,这种情况总是会发生,因为像cherry pick这样的事情。所以,除非这会在以后的合并中造成麻烦,为什么不让它保持原样呢?这就是你的流程的工作原理,请复制。谢谢,这就是我所做的(
git-rebase-sectronic-smile/dev
准确地说,如果我没有弄错的话,也是一样的),实际上,我的重复提交消失了,我的个人提交在分支上。这确实是一个我独自工作的分支,因此我想我将能够以同样的方式将微笑/开发分支的未来更新集成到我的sectronic分支中。