如何将git仓库的根目录上移一级?(不移动子文件夹)

3
我有一个本地的Git存储库,其文件夹结构如下。
kronos
|-- org_maps
|   |-- attach_departments.ahk
|   `-- attach_jobs.ahk
|-- org_sets
|   `-- create_org_sets.ahk
`-- labor_level_sets
    `-- create_labor_sets.ahk

我想通过将根文件夹向上移动一个级别来扩展我的Git存储库的范围。
scripts
|-- kronos
|   |-- org_maps
|   |   |-- attach_departments.ahk
|   |   `-- attach_jobs.ahk
|   |-- org_sets
|   |   `-- create_org_sets.ahk
|   `-- labor_level_sets
|       `-- create_labor_sets.ahk
`-- peoplesoft
    `-- kronos
        `-- add_elig_departments.ahk

我已经阅读了如何移动git仓库的根目录?,但是最佳答案建议重写历史记录,而我想避免这种情况。
如何将git仓库的根目录上移一级,而不需要重新定位现有的文件和子文件夹?

git mv命令有什么问题(这是你想要的正确方式)? - Leon
你只需要正确地执行以下操作 - 在当前根目录下创建一个名为kronos的子目录,并将所有已存在的子目录使用git mv命令移动到该目录中。然后将peoplesoft移动到根目录下的kronos目录中,并使用git add命令添加它。接着将顶层的kronos目录重命名为scripts,并将其向上移动一级(替换原始的scripts目录)。 - Leon
@Leon - 你只从存储库的角度来看待这个问题。原帖作者似乎试图在现有的目录结构中扩展存储库的范围,而不想对其进行干扰。 - Mark Adelsberger
虽然Mark Adelsberger的答案应该是更快、更直接的方式来完成相同的事情。 - Leon
@Leon,我建议你将你的解决方案作为备选答案发布。这是一个完全有效的解决方案,对于可能遇到命令行问题的未来读者可能会有帮助。 - Stevoisiak
显示剩余2条评论
1个回答

8
我认为我根据您的目录树图理解了您想做什么。这似乎是您已经有一个现有的目录结构,您不想重新定位任何文件;但是您希望git能够查看它现在拥有的文件,以及现有文件上面的目录。
我强烈建议在执行此操作之前备份,但是我相信以下步骤可以成功(并且在我的测试中没有问题),只要您不进行任何奇特的操作:
cd .../scripts
mv kronos/.git .
git add .

现在,如果你执行一个 git status,它应该显示你已经将仓库中的所有文件都“重命名”了,移动到了一个名为kronos/的目录下,并添加了来自scripts目录的其他文件。如果一切看起来正常,你可以进行提交。

这个按预期正常工作了。我将迁移分为两个独立的提交。(一个用于移动根目录,另一个用于添加PeopleSoft文件夹) - Stevoisiak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接