【发布时间】:2020-01-09 09:00:52
【问题描述】:
在我从事的一个项目中,有一个奇怪的系统,在该系统中,我基本上可以输入新的提交以附加到 master。与其在放入补丁时提交补丁,不如在其元数据中稍作修改(尽管内容是 100% 相同的)。不幸的是,这意味着我的本地提交 ID 在通过系统后与远程提交 ID 不匹配。即,假设我有一个远程存储库的本地副本,其中包含三个提交:
C1 -> C2 -> C3
现在我在本地创建三个新的提交,X4 到 X6
C1 -> C2 -> C3 -> X4 -> X5 -> X6
然后我将X4 提交到系统中,将其更改为C4(内容相同,哈希不同)。这意味着遥控器现在有
C1 -> C2 -> C3 -> C4
还有我的本地人
C1 -> C2 -> C3 -> X4 -> X5 -> X6
我想从远程C4 中提取,删除我的本地X4 并将X5 附加到`C4,以便我在本地获取:
C1 -> C2 -> C3 -> C4 -> X5 -> X6
现在我通过本地运行git format-patch,然后是git reset --hard origin/master 和git pull,然后是git am,只运行X5 和X6。这是一个烦人且乏味的过程,有没有更好的方法?
【问题讨论】:
-
我已更新答案以删除可选步骤
-
请注意,如果从 C3 到 C4 的差异匹配从 C3 到 X4 的差异,
git rebase将自己省略 C4。如果它不这样做,X4 中的快照必须与 C4 中的不同,足以使两个git diffs 产生不同的git patch-ids。