git:如何在合并分支后重新设置分支的基础,并保持合并提交';变化
我有过这样的经历:git:如何在合并分支后重新设置分支的基础,并保持合并提交';变化,git,rebase,Git,Rebase,我有过这样的经历: A - B - M \ / C A、 B和M是主,C在特征分支上 我犯了两个错误: 在我进行合并之前,我没有意识到远程公司不接受合并提交 除了简单地解决冲突之外,我在合并提交中更改了很多内容 我想重新设置基址,所以看起来像是A-B-C-M,C-M可能挤在一起了 我只发现,唯一的回答是“合并很好” 我承认我仍然不是100%熟悉rebase语法,但是我告诉git要重新设置基础的任何组合,无论有没有-p和/或-I,它要么说没有任何东西可以重新设置基础(noop)
A - B - M
\ /
C
A、 B和M是主,C在特征分支上
我犯了两个错误:
-p
和/或-I
,它要么说没有任何东西可以重新设置基础(noop),要么说它不工作
似乎合乎逻辑的选择是使用C和rebase-ip master
,但它并没有达到我预期的效果。考虑到这段历史:
A - B - M
\ /
C
在M处,您将软重置为B,然后提交,然后您将得到A-B-M'
,这似乎是您想要的:
git checkout M
git reset B
git commit
分支的内容将保持不变,所有这些命令都不会改变,只有
C
从历史记录中删除,使其看起来像一个直分支。这将是git checkout
和git reset--soft B
,因为新的提交是从索引的内容进行的,并影响当前的分支(或分离的头部)。这就像一个符咒,但我不知道为什么。重置为什么要这样做?M不见了(我猜是这样),C在另一个分支上,但没有人关心他。因此,重置soft is基本上使分支头指向该提交,并将差异作为要提交的更改。很高兴知道这一点,尤其是它不关心分支或任何事情,只关心实际的更改?当您进行软重置时,工作目录的内容不会更改。这是至关重要的。但HEAD指向您指定的某个版本。在这一点上,查看git diff,您将看到HEAD和您的内容之间的差异。当您提交时,这些差异自然会成为新提交的内容。这很简单。是的,我认为可以说Git主要关心实际的变化。这很有道理。