[英]How to recursively remove a broken git remote from all repos in a directory?
我有一個文件夾,其中充滿了舊的git存儲庫,位於任意文件夾深度。 其中許多回購協議是在我使用不再存在的舊git主機時創建的。 我需要找到所有引用該舊遠程服務器的本地存儲庫,並將其從我的本地存儲庫中刪除。
Linux的:
find . -name .git -type d -prune -exec sh -c 'git --git-dir "{}" remote -v | grep bad.domain | cut -f1 | uniq | xargs -r -n 1 git --git-dir "{}" remote rm' \;
Windows PowerShell:
find . -name .git -type d -prune -exec sh -c 'git --git-dir ''{}'' remote -v | grep bad.domain | cut -f1 | uniq | xargs -r -n 1 git --git-dir ''{}'' remote rm' ";"
Windows中的轉義序列很奇怪...
工作原理:
find
所有git倉庫(查找.git
文件夾)
-prune
阻止find
遞歸到找到的.git
目錄中,從而提高了性能 git ... remote -v
grep
的bad.domain
。 cut
為遠程名稱 uniq
過濾重復的遠程名稱 xargs
為找到的每個遠程運行git remote rm
-r
表示如果在該存儲庫上未找到不良的遠程,則不要運行git remote rm
-L 1
意味着對存儲庫中的每個不良遠程運行一次git remote rm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.