[英]How to trim a git-svn repository to remove branches and tags WITHOUT re-cloning?
如果我忘了只簽出SVN信息庫的trunk
,而是簽出了所有內容,那么以后有什么方法可以修剪我的git-svn信息庫而無需重新克隆它?
您必須將git filter-branch
與subdirector-filter
以更改存儲庫歷史記錄,以便僅包括主干更改,並且在目錄的根目錄中包含git filter-branch --subdirectory-filter trunk
。
而且您還必須更改提交消息(例如,在與msg-filter
相同的filter-branch
運行,以將/trunk
包含在git-svn
元數據中,該元數據存儲在提交消息中,例如git filter-branch --subdirectory-filter trunk --msg-filter 'sed s!/project@!/project/trunk@!'
然后,您必須將git config -e
的git
config值svn-remote.svn.url
更改為僅通過在最后添加/trunk
來同步trunk
。
您還必須通過git update-ref refs/remotes/git-svn master
更新git-svn遠程引用。
最后但並非最不重要的一點是,您需要通過刪除.git/svn/refs/
來刪除一些將由git-svn
重建的元數據。
完成所有這些操作后,您應該就可以了,我只是在一個小的測試存儲庫中進行了嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.