在存储库变基时保留非线性历史记录并处理冲突[重复]

问题描述 投票: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 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.