我最近在一个陈旧的分支(比如B
)上做了一些艰苦的工作,这个分支最初是从另一个陈旧的分支(比如A
)派生出来的。A
甚至已经从远程存储库中删除了,但幸运的是我还有一个本地副本。
因为我不想丢失我的工作,所以我想将A
和B
之间的差异提交到master
中。请注意,挤压和樱桃采摘几乎是不可能的,因为有大量的提交,我有很多合并和冲突解决所有的道路。
从我的Angular 来看,根据我的深刻理解,唯一的方法(或者说最简单的方法)是比较A
和B
(可能通过git diff B A
),并将差异提交到一个新的分支(比如C
),然后将C
合并到master
。
如何将两个分支之间的差异提交到第三个分支?
2条答案
按热度按时间xpszyzbs1#
我会把我的解决方案(感谢ChatGPT的帮助),也许它有助于在未来的人。解决方案如下:
A
:git checkout A
1.从
A
开始创建新分支C
:git checkout -b C
1.将
B
合并到C
:git merge B
。1.解决冲突(如果有)。
1.阶段化变更:
git add .
1.提交暂存更改
git commit -m "difference between B and A"
--- >此时,
A
和B
之间的所有差异都被收集到一次提交中(甚至冲突也被解决)。假设新的提交具有散列YYYYYYYY
。1.现在,我们将
cherry-pick
提交到master
:git cherry-pick -m 1 YYYYYYYY
有些步骤可以简化,但更喜欢把广泛的解决方案。
kq0g1dla2#
首先确保您的工作目录没有更改。
然后在branchB的顶端创建一个branchC:
将soft重置为branchA,以获取自A以来在B中所做的更改:
然后提交所有更改。
之后,在branchC中有一个包含A和B之间所有更改的提交。然后你可以选择它,或者使用
git rebase --onto
在任何你想要的地方重定branchC only commit的基。