在我从事的项目中,有一个怪异的系统,在该系统中,我基本上可以提供要附加到master的新提交。与其在放入补丁时不提交补丁,而是对其元数据进行了少许修改(尽管内容是100%相同的)。不幸的是,这意味着我的本地提交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
。这是一个烦人而又乏味的过程,有没有更好的方法?
本地回购
C1---C2---C3---X4---X5---X6 (master)
远程回购
C1---C2---C3---C4 (origin/master)
从远程获取更改 ((来源)] >>
git fetch origin
本地回购
(master) 进入C4并忽略X4C1---C2---C3---X4---X5---X6 (master) \ C4 (origin/master)
Rebase当前分支
git rebase --onto C4 X4
本地回购
C1---C2---C3---C4---X5---X6 (master)
\
(origin/master)
交互式基础可能会解决问题。