1.將所有遠端分支拉取到本地
git branch -r |
grep -v '\->'
|while
read remote;
dogit branch --track "$"
"$remote"
;done
git fetch --all
git pull --all
clone 乙份原倉庫並刪掉原來的 remote:(依次執行以下命令)
(1)git clone
(2)cd
(3)git remote rm origin
然後執行如下命令(這是重點):
(1)git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter – --all
這條命令同樣會過濾所有歷史提交,只保留所有對指定子目錄有影響的提交,並將該子目錄設為該倉庫的根目錄。這裡說明各下個引數的作用:
–tag-name-filter 該引數控制我們要如何處理舊的 tag,cat 即表示原樣輸出;
–prune-empty 刪除空的(對子目錄沒有影響的)提交;
–subdirectory-filter 指定子目錄路徑;
– --all 該引數必須跟在 – 後面,表示對所有分支進行操作。如果你只想儲存當前分支,也可以不新增此引數。
清理.git的object
當上述命令執行完畢後,就可以看到本地的新倉庫已經是原倉庫子目錄中的內容了,且保留了關於該子目錄所有的提交歷史。不過只是這樣的話新倉庫中的.git 目錄裡還是儲存有不少無用的 object,我們需要將其清除掉以減小新倉庫的體積(如果你用subtree 的方法的話是不需要執行這一步的)。
依次執行以下命令:
git reset --hard
git for-each-ref --format=
"%(refname)" refs/original/ |
xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --aggressive --prune=now
5.將新的本地倉庫推送到遠端
cd到
git remote add origin
(2)推送到遠端(推送所有分支):
git push --all origin -u
git拆分子目錄作為新倉庫並保留log記錄
需求描述 現有乙個非常之龐大 大的過分 的git 倉庫,包含了 n多個專案的原始碼,專案各個階段的文件,原型等。對於新使用者來說,clone 一次需要很長時間 網速也是槽點 因此決定將原倉庫拆分,將原始碼子目錄作為乙個新的倉庫,並且需要保留和子目錄相關的 log 記錄。一 前期準備 所有的命令在gi...
python建立子目錄並在子目錄下建立檔案
import os 首先判斷當前工作目錄下是否存在目錄machine learning ifnot os.path.isdir machine learning 不存在的話就建立子目錄machine learning 因為父目錄存在,所有這裡用mkdir也可以 os.makedirs machine...
iview admin nginx 部署子目錄
1 修改專案下的 vue.config.js 部署環境改為子目錄的名稱 2 nginx配置 這裡使用alias 不能用root server 3 alias和root的區別 實際util.js 檔案是在dist js 目錄下,這樣會訪問不到資源 4 前後端分離,正式環境nginx配置 設定正式環境下...