追記
こんなシェル芸しなくても
git push origin HEAD
でいけます。なんなら
git push -u origin HEAD
すれば次回からはgit push
で済みます。
コマンド
Bash/tcsh
git push origin `git branch | fgrep '* ' | tr -d '* '`
git pull origin `git branch | fgrep '* ' | tr -d '* '`
``内は何をやっているのか
まず、git branch
でブランチの一覧を取り出します。出力の形式は次のようになります。
他のブランチ1
他のブランチ2
・
・
・
他のブランチk-1
* 現在のブランチ
他のブランチk+1
・
・
・
他のブランチn
現在のブランチのところにだけ「*
」がついています。そこでfgrep
の出番です。これはgit branch
の出力から「*
」がある行だけを残して次のtr
に渡します。最後のtr
は、余分な「*
」を削除する働きをします。``は内部のコマンドの出力を全体のコマンドの一部の文字列として挿入するものなので、それぞれ
Bash/tcsh
git push origin (現在のブランチ)
git pull origin (現在のブランチ)
に置き換わります。