Rebasing内容相同但哈希值不同的提交

问题描述 投票:2回答:2

在我从事的项目中,有一个怪异的系统,在该系统中,我基本上可以提供要附加到master的新提交。与其在放入补丁时不提交补丁,而是对其元数据进行了少许修改(尽管内容是100%相同的)。不幸的是,这意味着我的本地提交ID在通过系统后就不会与远程匹配。即,假设我有三个提交的远程存储库的本地副本:

C1 -> C2 -> C3

现在我在本地创建三个新的提交,X4X6

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/mastergit pull,然后是仅git amX5X6。这是一个烦人而又乏味的过程,有没有更好的方法?

git rebase
2个回答
0
投票

本地回购

C1---C2---C3---X4---X5---X6 (master)

远程回购

C1---C2---C3---C4 (origin/master)

从远程获取更改 ((来源)] >>

git fetch origin

本地回购

C1---C2---C3---X4---X5---X6 (master)
           \
            C4 (origin/master)

Rebase当前分支

(master) 进入C4并忽略X4
git rebase --onto C4 X4

本地回购

C1---C2---C3---C4---X5---X6 (master)
                \
                 (origin/master)

More info on rebase onto


0
投票

交互式基础可能会解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.