在没有特定提交的情况下复制或变基存储库,保持非线性历史记录[重复]

问题描述 投票:0回答:1

已被多次询问但我无法确定合适答案的问题的变体。简而言之,我想复制一个存储库没有特定的提交,并且以最小的努力保留已经完成的合并冲突。


我知道有

从历史记录中删除提交,但它对于我的情况来说不够具体,它们根本没有解决保留已完成的合并和处理冲突的情况。

git rebase -i

 还不够,应该保留合并及其处理方式,以保持非线性历史记录。

虽然我的问题与单个文件密切相关,但我想清理提交,并且

git-filter-repo

git rm --cached
 太简单了,不想要我想要的。


我们希望从 git 历史记录中删除一些提交,就好像它们从未被创建过一样(我们不仅想清理文件,还想清理提交)。先决条件:

    有用的部分:
  • 删除的提交是独立文件,之后再也不会被触及。
  • 我们想要
  • 保留 git 历史记录,保留合并以及如何处理它们以实现非线性历史记录。
我们发现最好的事情是

git rebase -i master --rebase-merges

 并执行 
label-onto 并删除/删除我们不想要的提交。 然而,这迫使我们再次处理过去解决过的所有合并冲突。如何避免这种情况,即如果存储库没有我们想要删除的提交,我们如何制作副本?

git git-merge rebase git-rebase
1个回答
0
投票
保留要删除的文件列表......以便您可以随时执行类似

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
这应该有效,至少在纸面上是这样。

© www.soinside.com 2019 - 2024. All rights reserved.