git
には、git log
のカスタムフォーマットを使用すると「reflog identity」値があることがわかります。 reflog IDとは何ですか?git reflog IDとは何ですか?
答えて
によってグループ化されます。 reflogは、の参照への更新のレコードに過ぎず、の参照自体は、単にブランチとタグの名前と特殊名の一般化であるHEAD
です。
通常、Reflogは(あなたのような)クライアントリポジトリで有効になっており、通常はサーバーリポジトリでは無効になっています。これは当然、十分に設定可能です。彼らのreflogを見るために主に使用するフロントエンドコマンドはgit reflog
です。あなたが好きなら今すぐ実行することができますが、そのようにすると%ge
などの説明に役立ちません。だから私たちは何か違うことをやろう:実行git log -g
。
git reflog
を実行すると、基本的にgit log --oneline -g
が実行されます。 git log -g
を自分で実行すると、--oneline
を省略することができ、したがって各reflogエントリに複数の行が表示されます。
出力は名前とメールアドレスと、次のようになりますが変更されました:
commit 08b876daae9944d1a6fba271cfcd9629c13dfd69
Reflog: [email protected]{0} (A U Thor <[email protected]>)
Reflog message: commit: initial torturetest code
Author: A U Thor <[email protected]>
Date: Sun Aug 7 01:59:31 2016 -0700
initial torturetest code
commit 8bb118938b5c6a2978f13e74525b594a48226571
Reflog: [email protected]{1} (A U Thor <[email protected]>)
Reflog message: checkout: moving from master to torturetest
Author: Someone Else <[email protected]>
Date: Sat Jul 16 02:00:46 2016 +0200
Allow backend ...
を最新のコミットは、私は(まあ、今朝)昨晩作っ一つです。これは[email protected]{0}
です。これはコミットを表します(その真の名前は08b87...
で始まる大きな醜いSHA-1ハッシュです)。コミット自体には作者(私は表示目的で名前を変更しましたが)、日付、コミットメッセージなどがありますが、reflogエントリ[email protected]{0}
,もには著者(私)、日付、およびメッセージ。この場合
、コミットの作者とREFLOG著者は同じあります。 reflogメッセージでさえ、基本的にコミット主題と同じです(Reflog message:
という行は、commit:
と同じように挿入されています)。だからそれほど役に立ちませんが、次の例を見てください。コミット8bb11...
。
このREFLOGエントリはREFLOG著者、およびは作者をコミットすると、他の誰かのように私を持っています。 さらに、メッセージ,checkout: moving from master to torturetest
のreflogはコミットの件名と完全に無関係であり、これはAllow backend
で始まります。あなたは、これはこれらのgit log -g --oneline
またはgit reflog
-bothから短い出力と比較した場合
はコミットIDとREFLOGセレクターと一緒に、唯一REFLOGメッセージを参照してください-you'll HEAD
ためREFLOGを調べます。
もう1つのことはここで注目する価値があります。通常のgit log
出力では、それぞれのコミットは通常に一度だけ表示されます。ただし、git log -g
の出力では、Gitはreflog自体に格納されているハッシュIDを調べているので、コミットが繰り返し表示されることがあります。同じコミットを指しているブランチ間を行き来するか、git reset
を使用してブランチを先に指し示したコミットに戻すか、またはgit rebase
を実行するか、同様のものをいくつでも実行すると、簡単に取得できますこれは複数の異なるreflogエントリで同じコミットを指しているHEAD
とのブランチ名の両方に適用されます。 (私はこれはおそらく約-だけでなくて、あまりにも多くのGitのコマンドを実行していたものを、本当にわからないんだけど
08b876d [email protected]{0}: commit: initial torturetest code
8bb1189 [email protected]{1}: checkout: moving from master to torturetest
8bb1189 [email protected]{2}: checkout: moving from torturetest to master
:私の場合は
は、例えば、私は明らかに名前torturetest
か何かにビットをvacillated 。私は:-)中だったリポジトリ思い出す)あなたの質問に直接戻る
:
はREFLOGアイデンティティは何ですか?
各reflogエントリに格納されている名前と電子メールアドレスです。自分のクライアント上のプライベートGitリポジトリの場合、これらはすべて常に同じである可能性があります。しかし、いつでもgit config --global user.name "New User Name"
とgit config --global user.email [email protected]
を実行して変更することができるので、が変わることがあります。あなたは不思議に取得する場合、他の誰かが、またコミッターであること
。コミットの作成者とコミッター、および対応する日付と電子メールアドレスは、コミット自体に格納されます。 reflogの作成者、日付、および電子メールアドレスは、reflogエントリに格納されます。今日は平文のテキストファイルなので、.git/logs/HEAD
と.git/logs/refs/heads/master
を見ると、元のreflogデータを見ることができます。書式はあまり詳しくは書かれていませんが、かなり明白です:それは参照のための古い値と新しい値を持っています。 reflogの著者、電子メール、および日付スタンプ情報。およびreflogメッセージgit log -m -p
への分割を使用してマージがコミットしたときに、ここで
例外は、当然のreflogs自分自身のための1つの横に、発生します。通常git log
はマージコミットを完全にスキップし、git show
はの差分をと表示します。 (Combined diffのドキュメントはStackOverflowの "combined diffs"という用語では多少埋もれています)
git log
にdiffを表示させると、diffも表示されます。どのような場合でも、結合された差分は重要な情報を省略することができるので、これらのコマンドに異なることを伝えることができます。マージの各親に対して、その特定の親のツリーに対してマージコミットのツリーの差分を生成します。これは、-m
フラグの機能です。
親#1に対してコミットの差分コミット1234567...
を表示すると、Gitはマージコミット情報を表示してから差分を表示します。次に、親#2に対して差異コミット1234567...
を表示すると、Gitは2番目の差分の前にマージコミット情報を再度表示します。したがって、これはgit log
が同じコミットを複数回表示する方法です。
とgit -c user.email=whatever
を使用することもできますし、この場合は特殊なGit環境変数を使用することもできます。 git -c
を使用すると、the answer I wrote recently about Git diff color optionsのように、一回限りのテストに特に便利です。
git reflog
が別のコマンドです。
HEAD
が変更されるたびに、gitはその古い値を.git/log
フォルダに保存し、git reflogコマンドで表示できます。
"REFLOGアイデンティティ"のmeanning
は単純です:各コミットは、著者とタイトルこれらはREFLOGエントリを参照してください
- 1. git reflogの長い空白は何を表していますか?
- 2. git reflogからコミットを取得することは可能ですか
- 3. Gitは特定のブランチをreflogしますか?
- 4. インデックスのreflogはありますか?
- 5. Git reflogして新しくクローンしていますか?
- 6. gitのREFLOG参照はコミットを剪定が、枝
- 7. git pull、git fetchとgit rebaseの違いは何ですか?
- 8. gitグローバルコンフィグレーションファイルで.stCommitMsgとは何ですか?
- 9. reflogやcommitなどの後にgit bashをエスケープする
- 10. git reflogに空のメッセージが入っている項目
- 11. Gitのブランチチップとは何ですか?
- 12. git-daemonとは何ですか?
- 13. .git/sequencerディレクトリとは何ですか?
- 14. 「git checkout - 」とは何ですか?行う?
- 15. Gitの剪定とは何ですか?
- 16. Gitのチェンジセットとは何ですか?
- 17. gitのエントリポイントとは何ですか?
- 18. Xcode4のGitとは何ですか?
- 19. git -Hとは何ですか?
- 20. git pullとは何ですか?
- 21. gitで "git team-fetch"コマンドとは何ですか?
- 22. 「git remote update」と「git fetch」と「git pull」の違いは何ですか?
- 23. バンドルIDの$ productとは何ですか
- 24. タコのパッケージIDとは何ですか?
- 25. gitとgitの違いは何ですか?
- 26. git pushとgit pullの違いは何ですか?
- 27. git pushとgit commitのタグの違いは何ですか
- 28. git pull --rebaseとgit rebase:危険は何ですか?
- 29. 'git format-patchと' git diff 'の違いは何ですか?
- 30. "git whatchanged - filename"と "git rev-list-filename"の違いは何ですか?
驚くべき回答!どうもありがとうございました! – Mitar