簡體   English   中英

Git 過濾器分支到過濾器回購:標簽未重寫

[英]Git filter-branch to filter-repo : tags not rewritten

我一直在嘗試使用 git 過濾器分支修改腳本,該過濾器分支采用 git 存儲庫並通過指定此目錄的子文件夾將其分隔在多個新目錄中。 新目錄應該只包含修改其相應子文件夾的提交,因此使用過濾器分支。 我的目標是通過 filter-repo 更改 filter-branch 以獲得更好的性能。

它用於創建一個新分支 $branch 然后使用以下命令:

git filter-branch -f --prune-empty --tag-name-filter cat --subdirectory-filter $subdir $branch --tags

然后將分支推送到其相應的 repo(具有相同的名稱)以及重寫的標簽:

git checkout $branch
ssh-agent bash -c "ssh-add ../$privateKeyName; git push $branch $branch:$branchToExtract --tags -f"

($branchToExtract 並不重要,你可以認為它是“master”)

所以,如前所述,我一直在嘗試使用 filter-repo 而不是 filter-branch。 這是我一直在使用的命令:

git filter-repo -f --prune-empty always --subdirectory-filter $subdir --refs $branch

它工作正常......除了一件(重要)事情:將所有內容推送到新倉庫時,標簽與主要原始倉庫相同,這意味着它們有太多內容(和提交)而不是什么他們應該有。 就像標簽根本沒有被重寫一樣。 我一直在嘗試一些不同的東西,比如 --tag-rename 但無濟於事。

任何關於我應該做什么的幫助或關於我可能做錯了什么的指示將不勝感激。 謝謝:)

正如LeGEC所述,在 --refs 中列出標簽解決了這個問題。 我沒有完全意識到這個選項是如何工作的。

對於任何感興趣的人,這意味着正確的命令是git filter-repo -f --prune-empty always --subdirectory-filter $subdir --refs $branch $(git tag -l)

暫無
暫無

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

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