2
假設我單獨工作,並且只使用遙控器作爲代碼備份解決方案。有時我可能會刪除當地分行。刪除本地不存在的遠程分支
我知道我可以用git push origin --delete mybranch
刪除遠程的特定分支,但是有沒有辦法刪除本地不存在的所有遠程分支,而無需手動檢查本地不存在的分支?
假設我單獨工作,並且只使用遙控器作爲代碼備份解決方案。有時我可能會刪除當地分行。刪除本地不存在的遠程分支
我知道我可以用git push origin --delete mybranch
刪除遠程的特定分支,但是有沒有辦法刪除本地不存在的所有遠程分支,而無需手動檢查本地不存在的分支?
有時脫機工作時,我合併分支,然後刪除舊的(合併)分支。
最好是這樣做網上,你可以用push --delete
, as in this answer跟進:
git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin
但既然你本地刪除你的分支(離線),你需要的時候在網上,到fetch --prune
的來自GitHub的遠程分支,檢查他們的本地對應方是否存在,否則push --delete
。
使用git for-each-ref
with the refname:lstrip=3
format爲了列出這些遠程分支機構的短名稱:
git for-each-ref --format='%(refname:lstrip=3)' refs/remotes/origin
您可以檢查是否有local branch does exists與git show-ref --quiet
if git show-ref --quiet refs/heads/develop; then
echo develop branch exists
fi
所以,你可以輕鬆地將二者結合起來。
git fetch --prune
for branch in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes/origin); do
if ! git show-ref --quiet refs/heads/${branch}; then
echo "delete remote branch '${branch}'"
git push origin --delete ${branch}
fi
done
只要寫一個腳本來做到這一點。使用'git for-each-ref'(以'git fetch --prune'開頭來更新你的Git的遠程跟蹤分支)。 – torek
@torek是正確的,這可能是最好的方法,但是你激發了我的興趣,因爲這是一般慣例的極端相反,你的用例是什麼,你不想保留代碼? – LightBender
@LightBender我通常會進行本地提交,然後將所有分支推送到遠程。有時在離線工作時,我合併分支,然後刪除舊的(合併的)分支。但是,舊的(合併的)分支仍然存在於遙控器上。我正在尋找保持本地和遠程同步這種工作流程的方法。 – Flux