2012-02-15 189 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" 

完成。