簡體   English   中英

在文件夾層次結構中將具有完整歷史記錄的所有git內容上移一級

[英]Moving all git content with complete history one-level up in the folder hierarchy

我的git-Repo當前看起來像這樣:

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

A_Dir這樣將A_Dir所有內容上A_Dir一個級別(並刪除A_Dir )[包括整個​​歷史記錄,引用,標簽-好像A_Dir的內容始終位於.git的同一目錄.git所以我將能夠合並所有分支機構-因為此舉從未發生過]:

.git\
B_Dir\
C_Dir\
ManyFiles

我已經在stackoverflow上找到了一些答案,例如:

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目錄中。 我實際上需要執行相反操作的命令!

有人可以幫忙嗎?

git filter-branch通過--subdirectory-filter選項明確支持您想要的--subdirectory-filter

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM