2016-07-27 71 views
1

我最近找到了這個命令來獲取最近10個簽出分支的列表。近期結帳分支的git別名

git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n10 

我想創造這個叫「混帳最近」的一個別名,但是當我嘗試運行config命令,它拋出一個錯誤。 「找不到事件

git config --global alias.recent 'reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n10' 

反正有沒有得到這個複雜的命令的別名。如果有人知道如何將它作爲別名,除了一個數字參數以外,我們將不勝感激。命令末尾的-n10指示返回多少分支。

回答

1

這是有人碰巧就這個問題,這指揮他們。我確定了一個辦法。

對於我放棄嘗試使用git config命令來做到這一點。我反而打開了git配置文件本身並以這種方式添加了別名。 Adding git aliases

第二我確定我的腳本是正確的我只是不得不將它添加爲一個函數。 my_alias = 「F(){<您複雜的命令>};!F」 How to add Advanced alias template in git

這是我的別名的一個例子。

 
[alias] 
    recent = "!f() { git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n${1-10}; }; f" 
+1

對於它的價值,這就是我所做的,以及這個,或避免使用複雜的別名。 :-)問題是複雜的別名需要使用'!'字符和大量的引用,而shell喜歡吃'!'字符和各種引用。讓它們在shell中生存並進入別名文件是一件不必要的麻煩事,因爲你可以運行'git config --global --edit'或者相當於。 – torek

0

「事件未找到」來自您的bash,它在命令行中解釋了! ......您在第二個命令中混淆了您的單引號。應該清楚如何解決這個問題;說,如果你有問題想出來的......

雙引號也不起作用:

> echo '!' 
! 
> echo "!" 
bash: !: event not found 

提示:你可以讓外報價'然後用"裏面,這將難逃完整命令,包括bash中的!

我沒有現在是時候讓你這種說法,但我敢肯定你會算出它在任何時候...;)

+0

我加了雙引號,如果這就是你說的問題是,我仍然得到相同的錯誤。---- git config --global alias.recent「reflog | egrep -io」正在從([^ [:space:]] +)移動「| awk'{print $ 3}'| awk'!x [$ 0] ++'| head -n10「 –

1

雖然與您要求的有所不同,但如果找出最近更改的分支可能更有意義。

在這種情況下git branch實際上有一個--sort=<key>選項,它可以打印給定鍵排序的分支,如:

git branch --sort=-committerdate -v 

這將committerdate樹枝排序,而是由前綴-指定逆轉如在-committerdate中。而且打印的最新承諾,設置一個別名,如br,運行此命令:

git config --global alias.br "branch --sort=-committerdate -v" 

git-branch manual

+0

我也喜歡這個,但並不完全符合我的用例。在我工作的地方,有四個開發人員在單個存儲庫中進行協作,每天存儲十幾個Drupal多站點。由於這種設置,我們有超過1000個分支,其中大部分都以相似的名字命名。我們每個人都在一週內完成多個項目,所以我只需要一種方法來查看我最近查看的分支列表,這樣我就可以輕鬆地在我的工作中執行多項任務和操作。我認爲你的命令也會向我展示他們的工作,當我不記得我命名一個分支的時候,這很酷,但是壓倒性的。 –

+0

不過謝謝,我想我可以找到一種方法來使用它。 –