2012-04-11 6 views
1

私は複数のコマンドを実行するエイリアスを作ろうとしています。bashrc shエイリアスを使って複数の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のブランチを(。あなたがこれを行うにはいくつかの他の方法を知っていれば、それは素晴らしいことだ)ここで私がやっているものです作成することになっています)git repo(別個のプロジェクト)を示しています。それ自体は以前私が使っていたシンプルなCDエイリアスなので、問題はありません。

エラー私は取得しています:私はリファクタリングのように、複数のプロジェクトに影響を与えfeatureAで作業するとき、私はfeatureAブランチに常にだことを確認するため

bash: syntax error near unexpected token `;' 

が、私はこれをやっています。

ありがとうございました。

編集:shエイリアスを使いたいです。タイトルはこの事実を反映するために編集されます。

+0

使用することはできませんエイリアスの位置パラメータ( '$ 1')。 @Aviが示すように、関数を使用します。 –

+0

本当ですか?私はちょうどエイリアステスト= "エコー$ 1"を試して、それは正常に働いた。 –

+0

@ why-el:いいえ、それはしませんでした。文字列をダブルクォートしたので、エイリアスが作成される前に '$ 1'が評価されました*。 'alias test'を実行して確認してください。 – l0b0

答えて

2

それはあなたがエイリアスを望んでいないように見えるのではなく、シェル関数:

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

パーフェクト。これはうまくいった。あなたにはもう2つの質問があります:) 1.私の最初の試みがうまくいかなかった理由は何ですか?これらのタイプの機能に関するインターネットリソースはどれですか?私はこのスキルを学びたい。 –

+0

@ why-el:1.恐らく 'folder1'はシェルコマンドではないでしょう。あなたは' cd folder1'を意図していました。 – Avi

+0

2. Advanced Bash Scripting Guideは良いですが、長いですが。 http://tldp.org/LDP/abs/html/functions.htmlを参照してください。より短いリソースを探している場合は、「bash関数」などを検索してみてください。 – Avi

1

gitエイリアスかshエイリアスですか?

gitエイリアスの場合は、コードの先頭に!を追加する必要があります(シェルで実行できるようになります)。

しかし、私が読んだところでは、gitエイリアスではなくシェル機能があります。これは各フォルダに入り、上記のブランチをチェックアウトします(まったくいい方法ではありません)。

+0

私はshエイリアスに行くつもりだった。そして私がブランチカントと呼ぶシンプルエイリアスはそのコードを実行しますか? –

関連する問題