假设我filename
在 git 存储库的子目录中有一个文件,dir1
其历史记录如下:
v7 --- v8 --- v9 --- v10
该文件是具有各种子目录的较大存储库的一部分,但只有上述变更集会影响此文件。现在我又挖出了该文件的一个旧版本,filename
该文件被错误地提交到另一个子目录dir2
。这个旧版本只“存在”在一个变更集中,比如:
v4
现在的问题是,我能否重写这两个文件的历史记录(到 git),使其看起来好像filename
只存在于dir1
导致这样的历史记录:
v4 --- v7 --- v8 --- v9 --- v10
我想我可以尝试删除中的文件dir2
并将其作为中的文件的新版本提交dir1
,但这会弄乱文件的实际历史记录,从而使文件的实际最旧版本显示为最新版本。
我对“调整” git 存储库历史的经验很少,所以我不知道该怎么做,但我猜 rebase 可能是答案?我是唯一一个在存储库上工作的人,所以我唯一关心的是在两台计算机上同步这些更改。
我想我真正想要做的就是将文件保留在原来dir2
的历史记录中,但我想更改v4
上面调用的提交,使该文件成为 中的文件的版本dir1
。