已被多次询问但我无法确定合适答案的问题的变体。简而言之,我想复制一个存储库没有特定的提交,并且以最小的努力保留已经完成的合并冲突。
从历史记录中删除提交,但它对于我的情况来说不够具体,它们根本没有解决保留已完成的合并和处理冲突的情况。
git rebase -i
还不够,应该保留合并及其处理方式,以保持非线性历史记录。虽然我的问题与单个文件密切相关,但我想清理提交,并且
git-filter-repo
和
git rm --cached
太简单了,不想要我想要的。
git rebase -i master --rebase-merges
并执行label-onto 并删除/删除我们不想要的提交。 然而,这迫使我们再次处理过去解决过的所有合并冲突。如何避免这种情况,即如果存储库没有我们想要删除的提交,我们如何制作副本?
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
这应该有效,至少在纸面上是这样。