在重新建立存储库和非线性历史记录时保留已处理的冲突[重复]

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

已被多次询问的问题的变体,但我无法确定适合我的情况的答案。
简而言之,我想在没有特定提交的情况下对存储库进行变基,并以最小的努力保留已经完成的合并冲突,并具有更长的历史记录。 为什么这个问题不是简单的重复免责声明: 我知道有

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

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

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

git-filter-repo

git rm --cached

rebase

reset
 配对太简单,不是所需要的,git 历史记录并不简单。 
涉及的单个文件应该会让这个过程变得
更容易
,但不会让它变得微不足道。


有关问题的更多详细信息: 我们希望从 git 历史记录中删除一些提交,就好像它们从未被创建过一样(我们不仅想清理文件,还想清理提交)。先决条件:


有用的部分:

删除的提交是独立文件

,之后再也不会被触及。

    我们想要
  • 保留 git 历史记录,保留合并以及如何处理它们以实现非线性历史记录。
  • 我们发现最好的事情是 git rebase -i master --rebase-merges 并执行
  • label-onto
并删除/删除我们不想要的提交。

然而,这迫使我们再次处理过去解决过的所有合并冲突

。如何避免这种情况,即如果存储库没有我们想要删除的提交,我们如何制作副本?
保留要删除的文件列表......以便您可以随时执行类似git rm --cached the-list-of-doomed-files

的操作。你可以做一个
git git-merge rebase git-rebase
1个回答
1
投票
,并删除你想要删除的文件的提交....然后,当变基开始时,假设你想要做的只是

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.