私はgit log tag1..tag2
を使用して、tag1
とtag2
(ここでtag1
は古いタグ、tag2
は新しいものです)のコミットを確認しています。私はtag1
とtag2
の間で行われたコミットを見ることを期待しましたが、tag1
の日付よりも前に行われたコミットも見ています。なぜこれができますか?タグよりも古いコミットを示す2つのタグの間にGitログがありますか?
答えて
あなたは、commit1..commit2
が、人々が最初にそれが意味すると思うものを意味するわけではありません。実際、この表記法はcommit2 ^commit1
の略語です。つまり、コミットがcommit2
から到達可能であり、コミットを除いてcommit1
であり、到達可能性はcommit1
です。
この「到達可能」という概念は少しトリッキーです。私はそれを「ペイントが赤または緑で一時的に行う」と考えるのが好きです。赤は停止を意味し、緑は通常どおりに移動することを意味します。私たちは最新のコミットから始まり、逆に作業します。赤いペイントは緑のペイントをオーバーライドします。停止したコミットは、他の何かが行かなくても停止したままです。 、我々はに対応したバージョン1.0
、1.1
、および2.0
(v
とタグ)を、リリースしている。ここ
tag:v2.0
|
v
J1--J2 <-- release/2
/
...--G--H--I--J--... <-- mainline
\
H1--H2--H3--H4--H5 <-- release/1
^ ^
| |
tag:v1.0 tag:v1.1
:
は新しいコミットは常に右側に追加され、この1、のようなグラフをコミット考えてみましょうH2
、H5
、およびJ2
をそれぞれコミットします。いくつかの名前mainline
ポイントがJ
後にコミットし、私たちが行く/緑として名前mainline
を使用している場合、我々はJ
まで、そのすべてのコミットを取得し、その上I
、H
、G
に後方続ける、と。しかし、私たちは決して再び右に行くことはありません。したがって、余分なもののいずれかを描くことはありませんJn
またはHn
は緑色です。同様に、H2
を赤で塗りつぶした場合、H2
、次にH1
、次にH
、およびG
というようにペイントして左に移動しますが、右に移動しないので、I
またはそれ以上のものには触れません右。
コミットを見てv1.0..v1.1
を表示します。コミットH5
、次にH4
、次にH3
と表示されます。彼らは(v1.1
aka H5
から始まる)緑色で塗装されていて、v1.0
aka H2
から始まって赤く塗られたことはありません。 v1.1..v2.0
を見ると、J2
、次にJ1
、次にJ
、次にI
、次にH
と表示されます。それはすべて罰金であり、おそらくあなたが期待しているものです。
しかし、このグラフは非常に線形です。我々はグラフのいくつかのフォークとマージの振る舞いがあるとします。
G--H
/ \
...--E--F K--L <-- branchname
\ /
I--J
を、我々はから開始するL
をコミット選ぶ、とJ
で停止します。我々はJ
赤を塗り、I
とF
とE
などもすべて赤です。そして、我々はL
緑、K
緑、そしてH
緑、そしてG
緑を塗りつぶします。 F
は既に赤色です(または、緑の後に赤を表示すると赤で上書きされます)。最終的なコミットのリストは、G
がおそらくJ
より前のものであっても、L
,K
,H
、およびG
です。そのトリックは、G
はJ
からに到達できないということです。 Gitは日付をまったく使っていません。コミットグラフの到達可能性になります。
また、my answer~List commits between 2 commit hashes in git、より一般的にはThink like (a) Gitも参照してください。
- 1. Git:あまりにも古いコミットにリセットされ、gitログは、私が今持っているコミットからのみ表示します。
- 2. 他の2つのタグの間に1つのタグを見つける方法はありますか?
- 3. 2つのタグ間に複数のコミットを含むパッチを作成する方法はありますか?
- 4. gitは同じコミットで2つのタグを記述する
- 5. なぜいくつかのgitコミットはその親より古いですか?
- 6. Gitが特定のコミット(タグ)までプル
- 7. タグがすでにコミット中であればgitタグは失敗しません。タグを付けたい
- 8. 1つのタグに2つのフォント素晴らしいアイコンがあります
- 9. libgit2:2つのタグ間のすべてのコミットを見つけるか?
- 10. 終了タグが親に表示されている場合、2つのタグ間ですべてを取得する方法はありますか?
- 11. gitlabに2つの最新のタグを保存し、最も古いタグを削除するには?
- 12. 古いgitコミットを取り除く
- 13. gitログをタグでフィルタリングするには?
- 14. git - ブランチ "タグ"を他のコミットに移動しますか?
- 15. なぜiframeタグに終了タグがありますか?
- 16. Gitタグとブランチのバージョンはありますか?
- 17. 古いタグからのgitの修正に関するベストプラクティス
- 18. ブランチあたり1つのコミットを示すGitロググラフ
- 19. JSF 2タグにはId必須属性がありますか?
- 20. 古代の "マーキー"タグの代わりに?
- 21. このコミットにタグはありません。
- 22. RethinkDB:時間旅行(古いものもあります)
- 23. Visual Studio Codeに「タグ間の選択」ショートカットはありますか?
- 24. Bitbucket RESTインターフェイスとGIT;ブランチからの2つのタグ間のログ履歴を取得する方法
- 25. 2つのコミットを元に戻し、良いものだけをコミットする方法はありますか?
- 26. liタグに2つのdivを並べる方法はありますか?
- 27. タグにng-clickディレクティブが2つある場合、どうなりますか?
- 28. BeautifulSoupタグにハイパーリンクがあります
- 29. 複数のタグを持つコミットの最新タグを表示する
- 30. git/gerritにコミットがありません
詳細な説明をありがとう。 – lebowski