簡體   English   中英

如果刪除remote作為別名,則git delete local分支

[英]git delete local branch if remote is deleted as alias

我是git的新手,我想為該命令使用別名,但遇到了一些麻煩。

git fetch -p &&git branch -vv|grep ': gone]'|awk '{print $1}'|xargs git branch -D

這是這里問題的功能。 刪除不再位於遠程的本地分支

該功能對我來說非常理想,但是當我嘗試將其放入別名時,它可以運行但不起作用。 任何建議將不勝感激。 這就是我的配置中的樣子。

[alias]
deletedone = "!f() { git fetch -p &&git branch -vv|grep ': gone]'|awk '{print $1}'|xargs git branch -D;}"

您只需要在別名的定義中添加"; f"

也就是說:

[alias] deletedone = "!f() { git fetch -p && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -D; }; f"

或等於多少,運行命令:

git config alias.deletedone '!f() { git fetch -p && git branch -vv | grep '\'': gone]'\'' | awk '\''{print $1}'\'' | xargs git branch -D; }; f'

或將別名設為全局(獨立於任何回購):

git config --global alias.deletedone '!f() { git fetch -p && git branch -vv | grep ": gone]" | awk '\''{print $1}'\'' | xargs git branch -D; }; f'

編輯:由於別名的原始版本不夠健壯,如本注釋中所述 ,我做了一些調整,最終獲得了以下版本:

git config --global alias.deletedone '!f() { git fetch -p && git branch -vv | \
  perl -wne '\''print "$1\n" if m/^\s*(\S+)\s+[0-9a-f]+\s+\[\S+: gone\]/;'\'' | \
  xargs git branch -d; }; f'

您正在定義一個函數,但是從不運行它。 據我所知,實際上根本不需要定義一個。

git config --global alias.deletedone '!bash -c "git fetch -p && git branch -vv | grep \': gone]\' | awk \'{print $1}\' | xargs git branch -D" -'

不是在可以測試該功能的計算機上,而是應該執行您想做的事情(可能某處存在語法錯誤)。

在git外部調用時,調用一個新的bash實例會將其置於自己的作用域中。 當我不使用這種語法時,我遇到了奇怪的范圍問題。

暫無
暫無

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

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