![](/img/trans.png)
[英]How can I move all git content one-level up in the folder hierarchy?
[英]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.