如何在 Git 中的所有其他提交之前添加父提交?

Mar*_*iro 6 git

我正试图将一个开源项目转换为 Git,并且我最近获得了对该项目历史数据的访问权限。不过,我已经对 repo 进行了修改,因此我想在 git 提交时将这些早期更改添加到Git 中提交树的开头。(是的,我知道这将更改以后提交的 SHA;这是可以接受的。)数据作为工作目录的连续快照提供。我想设置它以便以后提交的工作目录的状态不受影响(我不想合并更改)。

例如,如果初始提交B补充文件ab工作目录,我的历史提交A补充文件a,我想打一个新的提交B'从父A,增加了文件b只。在B和 中B',工作目录看起来相同,并且B可以安全地重新基于B'.

可以在 Git 中做到这一点吗?如果是这样,如何?

编辑:请注意,我需要修改初始提交。的标准用法git commit将新提交附加为提交的子HEAD提交,因此不适用于没有父提交的初始提交。

小智 10

像这样的事情应该有效。

# Create a new branch with the old history
$ git checkout --orphan old-history    
$ git add <old-files>
$ git commit

# Rebase master on top of the branch with old-history
$ git checkout master
$ git pull --rebase . old-history
Run Code Online (Sandbox Code Playgroud)