我的项目位于文件夹C:/projects/NameOfProject/MyCode/
中,并且.git
位于文件夹MyCode/
中,因此只有MyCode的内容位于存储库中。
最近,我在文件夹OtherFiles/
中与项目相关的文件夹NameOfProject/
中添加了一些其他文件。由于MyCode/
和MyCode/
中文件之间的关系,我无法将它们移至OtherFiles/
。现在,我需要以某种方式更改存储库设置,文件夹MyCode/
和OtherFiles/
将位于存储库的根目录。而且,非常需要继续提交历史记录:更改存储库根目录后的下一次提交将保留当前分支的历史记录。
总结以上内容:我在C:/projects/NameOfProject/MyCode/
中有存储库,并且我想将存储库根目录移到C:/projects/NameOfProject/
,而不要在这两个文件夹中都移动文件/子文件夹。
我该如何实现?
答案 0 :(得分:2)
您需要使用tx_gridelements.setup >
重写整个tx_gridelements.setup.identifier >
存储库中的目录名称。我建议这样:
NameOfProject/MyCode/
复制到一个临时位置。git filter-branch
。过滤器将重写所有分支;对于每个现有的提交,它将创建一个新的子目录MyCode
并将所有文件移入其中(忽略错误;将至少存在一个错误-无法将git filter-branch --tree-filter 'mkdir MyCode && mv * MyCode || :' -- --all
移至MyCode
中)。这是整个过程的主要部分;它准备使存储库期望子目录MyCode
中的所有文件而不是存储库的根目录,但保留提交历史记录。MyCode
目录移动到MyCode
(而不是.git
!)并清除临时目录。C:/projects/NameOfProject/
。MyCode
MyCode/.git
答案 1 :(得分:-1)
您可以通过
在C:/ projects / NameOfProject /下初始化一个新的仓库。git init
并将远程分支拉到该仓库下,只需将MyCode和OtherFiles这两个文件夹复制并替换到初始化的git repo中,然后将其推送到您的远程仓库即可。