已被多次询问但我无法确定合适答案的问题的变体。简而言之,我想在没有特定提交的情况下重新设置/复制存储库,并以最小的努力保留已经完成的合并冲突。 我知道有从历史记录中删除提交
,但它对于我的情况来说不够具体,它们根本没有解决保留已完成的合并和处理冲突的情况。git rebase -i
还不够:应保留合并及其处理方式,以保持非线性历史记录。
虽然我的问题与单个文件密切相关,但我想清理提交,并且
git-filter-repo
和 git rm --cached
与
rebase
或 reset
配对太简单,不是所需要的,git 历史记录并不简单。 涉及单个文件应该会让这个过程变得更容易
。
删除的提交是独立文件
,之后再也不会被触及。git rebase -i master --rebase-merges
并删除/删除我们不想要的提交。
然而,这迫使我们再次处理过去解决过的所有合并冲突。如何避免这种情况,即如果存储库没有我们想要删除的提交,我们如何制作副本? 保留要删除的文件列表......以便您可以随时执行类似
git rm --cached the-list-of-doomed-files
git rebase interactive --rebase-merges
,并删除你想要删除的文件的提交....然后,当变基开始时,假设你想要做的只是
git 删除这些文件,而不需要额外的更改,然后每次发现冲突时都可以安全地运行它:
git checkout REBASE_HEAD -- .
git rm --cached the-list-of-dommed-files
GIT_EDITOR=/usr/bin/true git rebase --continue
这应该有效,至少在纸面上是这样。