Git
Gitリビジョンの構文
サーチ…
備考
多くのGitコマンドは、リビジョンパラメータを引数として取ります。コマンドによっては、特定のコミット、またはリビジョングラフを歩くコマンド( git-log(1)など )の場合は、そのコミットから到達可能なすべてのコミットを示します。これらは通常、構文記述の中で<commit>
、 <rev>
、または<revision>
れます。
Gitリビジョン構文のリファレンスドキュメントは、 gitrevisions(7)のマンページです。
まだこのページから抜けている:
- [_]
git describe
からの出力例:v1.7.4.2-679-g3bee7fb
- [_]
@
だけでHEAD
ショートカット - [_]
@{-<n>}
、例えば@{-1}
、および-
意味@{-1}
- [_]
<branchname>@{push}
- [_]
<rev>^@
、すべての親のための<rev>
個別のドキュメントが必要です。
- [_]リポジトリ内およびインデックス内のブロブおよびツリーを参照する:
<rev>:<path>
および:<n>:<path>
構文 - [_]リビジョンは次のように範囲
A..B
、A...B
、B ^A
、A^1
、及び改訂等限定-<n>
--since
オブジェクト名によるリビジョンの指定
$ git show dae86e1950b1277e545cee180551750029cfe735
$ git show dae86e19
SHA-1オブジェクト名、完全な40バイトの16進文字列、またはリポジトリに固有の部分文字列を使用してリビジョン(または実際には任意のオブジェクト:タグ、ツリーすなわちディレクトリの内容、ブロブ、すなわちファイルの内容)を指定できます。
シンボル参照名:ブランチ、タグ、リモートトラッキングブランチ
$ git log master # specify branch
$ git show v1.0 # specify tag
$ git show HEAD # specify current branch
$ git show origin # specify default remote-tracking branch for remote 'origin'
ブランチ(例えば 'master'、 'next'、 'maint')、タグ(例えば 'v1.0'、 'v0.6.3-rc2')、remote- ( 'origin'、 'origin / master'などの)ブランチ、および現在のブランチの 'HEAD'などの特殊な参照を追跡します。
シンボリックリファレンス名があいまいである場合、たとえばブランチとタグの両方が 'fix'(ブランチとタグの同名のものは推奨されていない場合)の場合は、使用するリファレンスの種類を指定する必要があります。
$ git show heads/fix # or 'refs/heads/fix', to specify branch
$ git show tags/fix # or 'refs/tags/fix', to specify tag
デフォルトのリビジョン:HEAD
$ git show # equivalent to 'git show HEAD'
'HEAD'は、作業ツリーの変更に基づいたコミットに名前を付けます。通常、現在のブランチのシンボリック名です。リビジョンパラメータを取る多くのコマンド(すべてではない)は、デフォルトで 'HEAD'になっています。
Reflog参照: @ { }
$ git show @{1} # uses reflog for current branch
$ git show master@{1} # uses reflog for branch 'master'
$ git show HEAD@{1} # uses 'HEAD' reflog
ref、通常はブランチまたはHEADの後に接尾辞@
つけ、括弧のペアで囲まれた序数の指定(例えば{1}
、 {15}
)はローカルリポジトリ内のそのrefのn番目の前の値を指定します 。最新のreflogエントリはgit reflog
コマンドでチェックするか、 - --walk-reflogs
/ -g
オプションを--walk-reflogs
てgit log
チェックすることができgit log
。
$ git reflog
08bb350 HEAD@{0}: reset: moving to HEAD^
4ebf58d HEAD@{1}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{2}: pull: Fast-forward
f34be46 HEAD@{3}: checkout: moving from af40944bda352190f05d22b7cb8fe88beb17f3a7 to master
af40944 HEAD@{4}: checkout: moving from master to v2.6.3
$ git reflog gitweb-docs
4ebf58d gitweb-docs@{0}: branch: Created from master
注意 :reflogを使用すると、 ORIG_HEAD
ref( HEAD@{1}
ほぼ相当)を利用する古いメカニズムが実質的に置き換えられました。
Reflog参照: @ { }
$ git show master@{yesterday}
$ git show HEAD@{5 minutes ago} # or HEAD@{5.minutes.ago}
refに続いて、日付の指定を中括弧のペアで囲んだ接尾辞@
が続きます(例: {yesterday}
、 {1 month 2 weeks 3 days 1 hour 1 second ago}
{1979-02-26 18:30:00}
{1 month 2 weeks 3 days 1 hour 1 second ago}
または{1979-02-26 18:30:00}
)前の時点(またはそれに最も近い点)でのrefの値。これは、指定された時刻にあなたのローカル refの状態を調べることに注意してください。先週あなたの地元の「マスター」支部にいたことがあります。
git reflog
を日付指定git reflog
とともに使用すると、ローカルリポジトリで指定した時間に正確な時刻を検索することができます。
$ git reflog HEAD@{now}
08bb350 HEAD@{Sat Jul 23 19:48:13 2016 +0200}: reset: moving to HEAD^
4ebf58d HEAD@{Sat Jul 23 19:39:20 2016 +0200}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{Sat Jul 23 19:26:43 2016 +0200}: pull: Fast-forward
追跡された/上流のブランチ: @{上流の}
$ git log @{upstream}.. # what was done locally and not yet published, current branch
$ git show master@{upstream} # show upstream of branch 'master'
分岐名に付けられた接尾辞@{upstream}
は、分岐名( <branchname>@{u}
)で指定された分岐が上に構築されるように設定されている分岐を参照します( branch.<name>.remote
とbranch.<name>.merge
、またはgit branch --set-upstream-to=<branch>
)。不足している分岐は現在のデフォルトになります。
リビジョン範囲の構文と一緒に、あなたのブランチが上流に先んじているコミット(上流のリポジトリにコミットしていないコミット)と、あなたがコミットしているもの(上流のコミットがローカルブランチにマージされていない)両方:
$ git log --oneline @{u}..
$ git log --oneline ..@{u}
$ git log --oneline --left-right @{u}... # same as ...@{u}
祖先鎖をコミットする: ^、 〜 等
$ git reset --hard HEAD^ # discard last commit
$ git rebase --interactive HEAD~5 # rebase last 4 commits
接尾辞^
は、コミット・オブジェクトの最初の親を意味します。 ^<n>
は<n>番目の親を意味します(すなわち、 <rev>^
は<rev>^1
と等価です)。
接尾辞~<n>
をリビジョン・パラメータに指定すると、最初の親に続く、指定されたコミット・オブジェクトの<n>世代祖先であるコミット・オブジェクトを意味します。つまり、 <rev>~3
は<rev>^^^
と同等です。ショートカットとして、 <rev>~
手段<rev>~1
、および同等です<rev>^1
、または<rev>^
短いインチ
この構文は構成可能です。
そのような記号名を見つけるには、 git name-rev
コマンドを使います:
$ git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940
その注意--pretty=oneline
していない--oneline
、次の例で使用する必要があります
$ git log --pretty=oneline | git name-rev --stdin --name-only
master Sixth batch of topics for 2.10
master~1 Merge branch 'ls/p4-tmp-refs'
master~2 Merge branch 'js/am-call-theirs-theirs-in-fallback-3way'
[...]
master~14^2 sideband.c: small optimization of strbuf usage
master~16^2 connect: read $GIT_SSH_COMMAND from config file
[...]
master~22^2~1 t7810-grep.sh: fix a whitespace inconsistency
master~22^2~2 t7810-grep.sh: fix duplicated test name
分岐とタグを参照解除する: ^ 0、 ^ { }
コマンドの動作は、ブランチ名、タグ名、または任意のリビジョンが指定されているかどうかによって異なります。後者が必要な場合は、「逆参照」構文を使用できます。
サフィックス^
オブジェクトタイプ名(続くtag
、 commit
、 tree
、 blob
ブレースペアで囲ま)が(例えば、 v0.99.8^{commit}
)でオブジェクトを間接参照を意味する<rev>
再帰型のオブジェクトまで<type>
オブジェクトが見つからないか、オブジェクトが参照解除されなくなりました。 <rev>^0
は<rev>^{commit}
短縮形です。
$ git checkout HEAD^0 # equivalent to 'git checkout --detach' in modern Git
接尾辞^
後ろに空の中v0.99.8^{}
組(たとえば、 v0.99.8^{}
)は、非タグオブジェクトが見つかるまで、タグを再帰的に逆参照することを意味します。
比較
$ git show v1.0
$ git cat-file -p v1.0
$ git replace --edit v1.0
〜と
$ git show v1.0^{}
$ git cat-file -p v1.0^{}
$ git replace --edit v1.0^{}
一番若いマッチングコミット: ^ {/ }、:/
$ git show HEAD^{/fix nasty bug} # find starting from HEAD
$ git show ':/fix nasty bug' # find starting from any branch
コロン( ' :
')の後にスラッシュ( ' /
')を続け、その後にテキストを付けると、コミットメッセージが指定された正規表現に一致するコミットに名前が付けられます。この名前は、最年少のマッチング任意の参照から到達可能であるコミットを返します。正規表現は、コミットメッセージのどの部分にも一致します。文字列で始まるメッセージを照合するには、例えば:/^foo
使用します。特別なシーケンス:/!
一致するものの修飾語として予約されています。 :/!-foo
は負のマッチを行いますが、 :/!!foo
はリテラルにマッチします!文字、続いてfoo
。
接尾辞^
はリビジョンパラメータに続き、スラッシュで囲まれたテキストを含む中括弧の後には、 <rev>
から到達可能な最も若いマッチを返す以下の:/<text>
構文と同じです。 ^
。