吉特更改存储库根文件夹

时间:2018-08-09 04:48:39

标签: git

我的项目位于文件夹C:/projects/NameOfProject/MyCode/中,并且.git位于文件夹MyCode/中,因此只有MyCode的内容位于存储库中。

最近,我在文件夹OtherFiles/中与项目相关的文件夹NameOfProject/中添加了一些其他文件。由于MyCode/MyCode/中文件之间的关系,我无法将它们移至OtherFiles/。现在,我需要以某种方式更改存储库设置,文件夹MyCode/OtherFiles/将位于存储库的根目录。而且,非常需要继续提交历史记录:更改存储库根目录后的下一次提交将保留当前分支的历史记录。

总结以上内容:我在C:/projects/NameOfProject/MyCode/中有存储库,并且我想将存储库根目录移到C:/projects/NameOfProject/,而不要在这两个文件夹中都移动文件/子文件夹。

我该如何实现?

2 个答案:

答案 0 :(得分:2)

您需要使用tx_gridelements.setup > 重写整个tx_gridelements.setup.identifier > 存储库中的目录名称。我建议这样:

  1. 备份所有内容。
  2. 将目录NameOfProject/MyCode/复制到一个临时位置。
  3. (在该temp目录中)使用以下命令重写目录: git filter-branch。过滤器将重写所有分支;对于每个现有的提交,它将创建一个新的子目录MyCode并将所有文件移入其中(忽略错误;将至少存在一个错误-无法将git filter-branch --tree-filter 'mkdir MyCode && mv * MyCode || :' -- --all移至MyCode中)。这是整个过程的主要部分;它准备使存储库期望子目录MyCode中的所有文件而不是存储库的根目录,但保留提交历史记录。
  4. 将新的MyCode目录移动到MyCode(而不是.git!)并清除临时目录。
  5. 确认您已备份并删除C:/projects/NameOfProject/
  6. MyCode
  7. MyCode/.git

答案 1 :(得分:-1)

您可以通过

在C:/ projects / NameOfProject /下初始化一个新的仓库。
  

git init

并将远程分支拉到该仓库下,只需将MyCode和OtherFiles这两个文件夹复制并替换到初始化的git repo中,然后将其推送到您的远程仓库即可。