【发布时间】:2016-12-02 15:34:54
【问题描述】:
目前我有两个分支,分别命名为 A 和 B:
B1-...many dirty checkouts...-B2
/
--O-A1-A2-......................-A3
目前,B2 和 A3 是相同的(git diff A B 给出一个空输出)。
现在的问题是,这种状态是通过 A.I.e. 的部分结帐达到的。很多时候git checkout -- dir1 dir2... 发生了,而不是git merge。
简单地将 B 合并到 A 完全废话 A,这是不可能的。
我不想失去 B 的历史。
我应该以某种方式告诉 git,分支 B 上的 git merge A 不应该做任何事情。
当然,我可以简单地将 B2 替换为 A3,但在这种情况下,我会丢失 B 的历史记录。
有没有可能?
【问题讨论】:
-
我不明白你在做什么。如果没有差异,为什么合并会有问题?
-
您是否要保留 B 历史记录并替换 A = B 历史记录?
-
@MadPhysicist “脏结帐”意味着发生了一些
git checkout -- dir1、git checkout -- dir2和类似情况(以及它们之间的其他一些合并)。现在 A3 和 B2 完全一样,这就是为什么 diff 是空的,但 git 不知道。 -
这里的工作目录和提交之间似乎有些混淆。
-
@MadPhysicist 不,工作目录完全没问题(我从来没有在没有完美同步的工作目录的情况下提交、合并等)。
标签: git merge git-merge git-rewrite-history