更改Git存储库的根目录

时间:2012-08-01 16:56:15

标签: git repository

我有以下源结构:

/dir1
    file1
    file2
    file3

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

file1
file2
file3

我该怎么做才能实现这个目标?

2 个答案:

答案 0 :(得分:5)

免责声明:这将重写历史记录,并成为已经克隆您的存储库的任何人的PITA。您不应该在已发布的历史记录中执行此操作。

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

git filter-branch \
  --subdirectory-filter dir1 \
  --tag-name-filter cat \
  -- --all

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

答案 1 :(得分:4)

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

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

mv .git ./dir1/.
git init .
git add .
git commit

在移动之前进行最后一次提交很重要:git使用文件的哈希来识别它们。未更改的文件被视为'重命名'。 如果您在移动之前有未经注释的文件,则会将其记录为几个已删除的文件' '添加'对于每个修改过的文件,你都会忘记这些文件。