2016-09-18 6 views
1

私は他のブランチの現在のブランチに先立ってコミットを印刷するbashスクリプトを作ろうとしています。しかし、サブシェルでコマンドgit branchを実行すると、ブランチ名だけでなく、カレントディレクトリのファイルとフォルダのリストも取得できます。なぜ$(git branch)を呼び出すのがこのように振る舞うのですか?

+0

を別のディレクトリ –

答えて

4

これはコマンドの置換ではなく、引用です。

$ git branch 
    5-job-test-fails 
* master 
    revisions 
    with_cool_background 

お知らせaskerisk:ここではレポでgit branchの結果です。

あなたがecho $(git branch)を書き、引数は引用符で囲まれていないであることから、アスタリスクは、現在のディレクトリ内のファイルに展開されます:

$ echo $(git branch) 
5-job-test-fails app bin cable config config.ru db erd.pdf Gemfile Gemfile.lock Guardfile lib log public Rakefile README.rdoc test tmp vendor master revisions with_cool_background 

これを克服するために、引数を引用:多分で

$ echo "$(git branch)" 
    5-job-test-fails 
* master 
    revisions 
    with_cool_background 
+0

うわー、これが当てはまるとは思わなかった。私は、すべての支店を繰り返し処理するforeach文を作成する必要がありますか?スターを扱うには? –

+0

ブランチ名を処理する前に、スターを削除する必要があります。この質問には、いくつかの方法があります。https://stackoverflow.com/questions/3846380/how-to-iterate-through-all-git-branches-using-bash-script受け入れられた答えに従ってスクリプト内で 'git branch'を全く使わない方がいいでしょう。 – user000001

関連する問題