将 git 存储库移动到同一路径中的子目录,同时保留其所有历史记录

Move git repository to a subdirectory in the same path while preserving all of its history

我有一个 git 存储库,其中有超过 100 个提交,我在下面的路径中初始化了一段时间:

/Users/myusername/

但是,我所有的提交实际上都是针对路径中的文件:

/Users/myusername/excess/folders/not/requiring/version/control/project_root/

我应该在 project_root/ 中初始化存储库,因为我不需要对上层目录中的任何内容进行版本控制。

有没有什么简单的方法可以更改我的存储库路径,使存储库的顶层为 project_root/,同时还能保留我的版本历史记录?是否还有任何额外的步骤可以将其反映在我的远程存储库中,或者我只是在进行更改后提交并推送?

如果出现问题,您可以删除复制的.git*文件并重新开始。您可以执行以下操作:

$ cp -r .git* path/to/project_root/
$ cd path/to/project_root/
$ git add -A .

当您调用 git status 时,您现在应该看到的只是重命名和删除。如果一切正常,你可以删除之前根目录中的.git*

另请注意,历史记录中存在的任何文件都将保留在那里,如果您有凭据文件等,则需要进行另一次清理操作