【发布时间】:2019-01-04 23:42:06
【问题描述】:
在分支 temp 中工作,我创建了一个新分支 temp2。我大量重新排列了一个文件,然后对其进行了一些清理。我答应了。
后来我意识到,如果我先进行重新排列、提交、清理、然后提交,我会有更清晰的历史记录。
也就是说,我只想把这个commit变成两个stage,两个commit。
嗯,我记得重新排列的部分。所以我切换到分支 temp 并再次进行了重新排列,没有进行清理。我的想法是,然后我可以将提交从 temp2 带到 temp。
我有什么:
------ before ----- rearrangement <-- temp
\
\
\
------- rearrangement plus cleanup <-- temp2
我想要什么:
------ before ----- rearrangement ----- rearrangement plus cleanup <-- temp
首先我尝试将 temp2 重新设置为 temp,但我遇到了合并冲突。这让我感到惊讶,因为没有要求合并任何东西。我认为变基只是改变了提交的附加位置。所以我放弃了。
然后我尝试将 temp2 中的“重排加清理”挑选到 temp 中。但我仍然遇到了合并冲突。这真的让我感到惊讶,因为我认为这完全不可能。所以我也放弃了。
我被困住了。我不明白这里发生了什么。 git 不基于差异。提交只是快照。那么为什么会有冲突呢?我要求做的就是按照一定的顺序排列这些快照。为什么这么难,我该怎么做?
【问题讨论】:
-
我认为您正在寻找交互式变基。 stackoverflow.com/questions/2740537/reordering-of-commits
-
@intboolstring 我不明白为什么。我不明白为什么它需要是交互式的,我不明白它与我过去所做的交互式 rebase 有什么关系,这涉及到我所做的相反 m 描述,即挤压。
-
交互式变基具有更多功能,而不仅仅是压缩(改写、重新排序、修复、删除等)
-
@intboolstring 这些名字对我来说都没有任何意义。你说我这里需要哪个?
-
我认为重新排序...
标签: git