2015-03-13 76 views
0

我的混帳回購目前看起來是這樣的:移動所有的git的內容與文件夾層次結構完整的歷史一個層次了

.git\ 
A_Dir\ 
+---- B_Dir\ 
+---- C_Dir\ 
+---- ManyFiles 

我想的A_Dir所有內容上移一級(及刪除A_Dir)像這樣[包括整個​​歷史,參考,標籤 - 好像A_Dir的內容一直在.git的相同目錄級別上,這樣我就可以合併所有分支 - 因爲此舉從未發生]:

.git\ 
B_Dir\ 
C_Dir\ 
ManyFiles 

我已經找到了一些答案的計算器一樣:

git filter-branch --index-filter 'git ls-files -s | 
    sed "s-\t\"*-&new_subdir/-" | 
    GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info && 
    mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' --tag-name-filter cat -- --all 

這種重寫的整個歷史,但在new_subdir目錄中移動的內容了。我其實需要執行反轉的命令!

任何人都可以幫忙嗎?

回答

0

git filter-branch有你通過它--subdirectory-filter選擇想要的明確支持:

git filter-branch --subdirectory-filter A_Dir --tag-name-filter cat -- --all 

A_Dir內容以外的任何歷史都將丟失。由於--tag-name-filter選項,這也將重寫任何標籤以指向修改的提交。

+0

這正是我所需要的!像魅力一樣工作,非常感謝你! – Nocs 2015-03-13 17:16:22