2012-02-15 273 views
10

我想以某种方式更改git目录结构。目前的架构是一样更改git结构

VL(repo)  
    .git (hidden)  
    code files  
    ......  
    ..... 

I want it like 

html(repo) 
    .git 
    VL 
     code files 
     ...... 
     ...... 

我有一个解决方案,以存档当前回购,然后创建与上述结构的新的回购协议。但这种方法的坏处在于它删除了以前的所有历史记录。有没有更好的解决方案?

回答

19

将根文件夹的名称从VL更改为html应该没问题,因为git只能在低于该级别的目录中工作。

那么,剩下的就是引进低于html文件夹中的文件夹VL和移动所有code files有:

mkdir VL 
git mv <all your code> VL 
git commit -m "moved all my code under VL" 

使用git mv你告诉你感动的事情git的,所以它仍然可以保持跟踪历史。


编辑:
作为Benjol注意到他的意见,使用git mv时并不需要。你可以通过复制<all your code>VL达到相同的,然后做

  • git add VL
  • git rm <all your code>
  • git commit -m "moved all my code under VL

Git是足够聪明的认识到这场运动。

+0

即使你不使用'git mv',git也应该接受文件只被移动而没有被改变的事实。 – Benjol 2012-02-15 12:55:56

+0

@ Benjol:是的,当然你是对的。只是想给OP提供信息,说明他的用例有一个内置命令。更新答案。谢谢。 – eckes 2012-02-15 13:07:21

+0

请注意,历史将通过“git log --follow”进行更改,但这仅适用于单个文件。 – yoyo 2014-07-09 03:41:51

2

手动移动您的代码。然后,

git add -A 
git commit -m "moved code" 

完成。