更改Git存储库的根目录

Bo *_*o A 3 git repository

我有以下源结构:

/dir1
    file1
    file2
    file3
Run Code Online (Sandbox Code Playgroud)

dir1 不需要,因为存储库本身可以像一个文件夹,所以我希望我的git存储库看起来像这样:

file1
file2
file3
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到这一点?

kni*_*ttl 5

免责声明:这将重写历史记录,并成为已经克隆您的存储库的任何人的PITA.你不应该在已发布的历史记录上这样做.

也就是说,您应该能够使用filter-branchGit命令重写所有树.在使用之前一定要了解所有含义(请阅读联机帮助页;备份).

git filter-branch \
  --subdirectory-filter dir1 \
  --tag-name-filter cat \
  -- --all
Run Code Online (Sandbox Code Playgroud)

NB.此命令还将保留您的移植物并替换引物.


sto*_*sky 5

您可以将 .git 移动到子目录中(不要忘记您的 .gitignore)。然后运行 ​​git init :

重要:在移动之前做最后一次提交(我会解释它......)

mv .git ./dir1/.
git init .
git add .
git commit
Run Code Online (Sandbox Code Playgroud)

在移动之前做最后一次提交很重要:git 使用文件的哈希来识别它们。未更改的文件被视为“重命名”。如果您在移动之前有未提交的文件,它会为每个修改过的文件记录几个“删除”“添加”,您将丢失这些文件的历史记录。