[解決済み】Git diffのコミット範囲にあるダブルドット「...」とトリプルドット「...」の違いは何ですか?重複] [重複] [重複] [重複] [重複] [重複
質問
次のコマンドの違いは何ですか?
git diff foo master # a
git diff foo..master # b
git diff foo...master # c
diffマニュアル が語っています。
<ブロッククオートブランチの比較
$ git diff topic master <1>
$ git diff topic..master <2>
$ git diff topic...master <3>
- トピックのヒントとmasterブランチの間の変更点。
- 同上
- master ブランチからトピックブランチを開始したとき以降に master ブランチで発生した変更。
が、私には全く理解できません。
どのように解決するのですか?
との違いの説明は、すでにこの画像を作成していたので、別の回答で使う価値があるかもしれないと思ったのです。
..
(ドットドット)と
...
(ドット・ドット・ドット)は、基本的に
manojldsさんの回答
.
コマンド
git diff
typically¹ は、コミットグラフのちょうど2点間のツリーの状態の差分のみを表示します。 そのため
..
と
...
の表記は
git diff
は以下のような意味を持ちます。
# Left side in the illustration below:
git diff foo..bar
git diff foo bar # same thing as above
# Right side in the illustration below:
git diff foo...bar
git diff $(git merge-base foo bar) bar # same thing as above
言い換えれば
git diff foo..bar
とは全く同じです。
git diff foo bar
どちらも、2本の枝の先端の違いを表示します。
foo
と
bar
. 一方
git diff foo...bar
は、2つのブランチの "マージベース" と、その先端の
bar
. マージベースとは、通常、2つのブランチ間で共通する最後のコミットのことです。
bar
で行われたことはすべて無視されます。
foo
その間に
については以上です。
..
と
...
の表記は
git diff
. しかし...
... ここでよくある混乱の元となるのが
..
と
...
のようなコマンドで使われる場合、微妙に異なることを意味します。
git log
は、1つまたは複数の引数としてコミットのセットを期待します。 (これらのコマンドは、最終的に
git rev-list
を使用して、引数からコミット一覧をパースします)。
の意味は
..
と
...
に対して
git log
は、以下のようにグラフ化される。
だから
git rev-list foo..bar
はブランチ上のすべてを表示します。
bar
ブランチにないものは
foo
. 一方
git rev-list foo...bar
のどちらかにあるすべてのコミットを表示します。
foo
または
bar
が、しかし
両方ではない
. 3つ目の図は、2つのブランチをリストアップすると、どちらか一方または両方にあるコミットが得られることを示しているだけです。
まあ、とにかく、ちょっとわかりにくいので、コミットグラフの図が役に立つと思います :)
¹ マージコンフリクトを解決するときなどは、"typically" としか言わないので。
git diff
を実行すると、3 者間マージが表示されます。
関連
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] git add -A」と「git add .」の違い。
-
[解決済み] .gitignoreと.gitkeepの違いは何ですか?
-
[解決済み] Git で現在のコミットのハッシュを取得する方法は?
-
[解決済み] Git のコミットで変更点を確認するには?
-
[解決済み] Git で、別のブランチの変更を選択的にマージしたり選択したりするにはどうすればよいですか?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
-
[解決済み】ブランチを指定せずにgit pushした場合のデフォルトの動作
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
[gitコミット失敗の解決] 現在のブランチの先端が後ろにあるため、更新が拒否されました。
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] "would clobber existing tag "を取り除くには?
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み] 2つのコミット間で変更されたファイル名のみをリストアップする方法
-
[解決済み] Git のコミット範囲におけるダブルドット "..." とトリプルドット "..." の違いは何ですか?
-
[解決済み] コミット間の差分表示