2013-09-23 11 views

答えて

16

gitバージョンがばかげて古いのではない場合、文字列@{u}は "上流"を意味します。すなわち、現在のブランチが追跡しているすべてのorigin/fooです。 (そして:HEADは「枝上の場合は、現在のブランチ」を意味し、..構文で何かを省略することHEADを意味します。)したがって、@{u}..は「その上流にありませんHEAD内のすべてを」意味:

[alias] 
    top = log --oneline --graph --decorate @{u}.. 
+2

いくつかのドキュメントをリンクできますか? '@ {u} 'が上流を意味することをどうお知りになりますか?他の '@ {...}'オプションもありますか? – erikbwork

+2

はい、見る場所は['git-rev-parse'](https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html)のドキュメントにあります。と['git-rev-list'](https://www.kernel.org/pub/software/scm/git/docs/git-rev-list.html)を参照してください。ファンキーな構文オプションがたくさんありますが、私は 'rev ^'と 'rev^{commit}'をまれにしか使用せず、 'branch @ {n}'をもっと使い始めています。 – torek

+0

+1:あなたは、ある種のウィザードです... –

2

一つの方法:

[alias] 
    top = "!git log --oneline --graph --decorate `git rev-parse --abbrev-ref HEAD` ^origin/`git rev-parse --abbrev-ref HEAD`" 

あなたの巣コマンドに能力を与えるシェルコマンドへのエイリアスになります。

+2

このあなたがブランチ 'foo'にいる場合、上流バージョンは' origin/foo'であると仮定します。しかし、もしあれば、実際の上流が 'origin/bar'か' other-remote/foo'か 'other-remote/bar'かもしれません。また 'HEAD'が分離されている場合に' git symbolic-ref -abbrev HEAD'を使うことをお勧めします。それは正常に失敗する方法の問題をもたらします:-) – torek

+1

@torek 'git symbolic-ref-短い頭 "、そう? – erikbwork

+1

@ erikb85:そうですね、私の頭か何かに '--abbrev-ref'がついていました。シンボリックなニーズがあります - ここでは.. – torek

関連する問題