git 如何将两个分支之间的差异提交到第三个分支?

yvfmudvl  于 2023-06-20  发布在  Git
关注(0)|答案(2)|浏览(131)

我最近在一个陈旧的分支(比如B)上做了一些艰苦的工作,这个分支最初是从另一个陈旧的分支(比如A)派生出来的。A甚至已经从远程存储库中删除了,但幸运的是我还有一个本地副本。
因为我不想丢失我的工作,所以我想将AB之间的差异提交到master中。请注意,挤压和樱桃采摘几乎是不可能的,因为有大量的提交,我有很多合并和冲突解决所有的道路。
从我的Angular 来看,根据我的深刻理解,唯一的方法(或者说最简单的方法)是比较AB(可能通过git diff B A),并将差异提交到一个新的分支(比如C),然后将C合并到master

如何将两个分支之间的差异提交到第三个分支?

xpszyzbs

xpszyzbs1#

我会把我的解决方案(感谢ChatGPT的帮助),也许它有助于在未来的人。解决方案如下:

  1. checkout 到Agit checkout A
    1.从A开始创建新分支Cgit checkout -b C
    1.将B合并到Cgit merge B
    1.解决冲突(如果有)。
    1.阶段化变更:git add .
    1.提交暂存更改git commit -m "difference between B and A"
    --- >此时,AB之间的所有差异都被收集到一次提交中(甚至冲突也被解决)。假设新的提交具有散列YYYYYYYY
    1.现在,我们将cherry-pick提交到mastergit cherry-pick -m 1 YYYYYYYY
    有些步骤可以简化,但更喜欢把广泛的解决方案。
kq0g1dla

kq0g1dla2#

首先确保您的工作目录没有更改。
然后在branchB的顶端创建一个branchC:

git checkout -b branchC branchB

soft重置为branchA,以获取自A以来在B中所做的更改:

git reset --soft branchA

然后提交所有更改。
之后,在branchC中有一个包含A和B之间所有更改的提交。然后你可以选择它,或者使用git rebase --onto在任何你想要的地方重定branchC only commit的基。

相关问题