2012-04-11 53 views
1

我正在嘗試爲我運行多個命令的別名。具體而言,該命令是應該建立在多個目錄多的Git分支(如果你知道一些其他的方式來做到這一點,那將是巨大的。)下面是我在做什麼:使用bashrc別名創建多個git分支

alias branches="folder1; git checkout -b $1 ; folder2 ; git checkout -b $1; folder3; git checkout -b $1; folder4; git checkout -b $1" 

注意,文件夾(N )表示一個git repo(一個獨立的項目),它本身就是我以前用過的簡單的cd別名,所以沒有問題。

我得到的錯誤:

bash: syntax error near unexpected token `;' 

我這樣做是因爲,當我在featureA影響多個項目,如一個重構的工作,我想確保我總是在featureA分支。

謝謝。

編輯:我想用一個sh別名。標題被編輯以反映這一事實。

+0

不能使用位置參數('$ 1')在別名中。正如@Avi演示的那樣,使用一個函數。 – 2012-04-11 13:42:48

+0

你確定嗎?我只是嘗試了一個{別名測試=「echo $ 1」},它工作正常。 – 2012-04-11 13:51:35

+0

@ why-el:不,它沒有。由於您對字符串進行了雙引號,因此在創建別名之前評估了$ 1。通過運行「別名測試」來檢查它。 – l0b0 2012-04-11 13:58:03

回答

2

看起來你不想別名,而是一個shell函數:

function branches { 
    cd folder1 
    git checkout -b $1 
    cd folder2 
    git checkout -b $1 
    cd folder3 
    git checkout -b $1 
    cd folder4 
    git checkout -b $1 
} 

或者更好,但這樣做在一個循環:

function branches { 
    for folder in folder1 folder2 folder3 folder4 ; do 
     cd $folder 
     git checkout -b $1 
    done 
} 
+0

完美。這工作。還有兩個問題,但你:) 1.任何想法,爲什麼我的第一次嘗試不工作?和2.這些類型的功能的任何互聯網資源?我想學習這個技能。 – 2012-04-11 13:48:36

+0

@ why-el:1.可能因爲'folder1'不是一個shell命令 - 你打算'cd folder1'。 – Avi 2012-04-11 14:07:29

+0

2.高級Bash腳本指南很好,雖然很長。請參閱http://tldp.org/LDP/abs/html/functions.html。如果你正在尋找更短的資源,嘗試谷歌搜索「bash功能」,或類似。 – Avi 2012-04-11 14:09:20

1

這是一個git別名或sh別名?

如果它是一個混帳別名,您需要在代碼的開頭添加一個!(這樣您的shell才能運行它)。

但是從我讀過的內容看,你不是一個git別名,而是一個shell函數,它會在每個文件夾中檢出所有分支(根本不是一個好主意)。

+0

我正在尋找一個別名。而我稱爲分支的簡單別名無法執行該代碼呢? – 2012-04-11 13:00:22