繁体   English   中英

Git的。 更改存储库根文件夹

[英]Git. Change repository root folder

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

最近,我补充说,在该文件夹的一些其他文件OtherFiles/关系到文件夹中的项目NameOfProject/ 我不能移动这些到MyCode/由于文件之间的关系MyCode/OtherFiles/ 现在,我需要以某种方式更改存储库设置,文件夹MyCode/OtherFiles/将位于存储库的根目录。 此外,非常需要继续提交历史记录:更改存储库根目录后的下一次提交将保留当前分支的历史记录。

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

我该如何实现?

您需要使用git filter-branch在整个NameOfProject/MyCode/存储库中重写目录名称。 我这样推荐:

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

您可以在C:/ projects / NameOfProject /下通过以下方式初始化一个新的仓库

git初始化

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM