Gitは2つのブランチを比較します

Git Compare Two Branches



ほとんどすべてのバージョン管理システムには、分岐オプションがあります。しかし、Gitはその高速分岐機能で知られています。 Gitブランチは軽量です。したがって、分岐によるパフォーマンスのペナルティは最小限であり、開発チームは可能な限り分岐してマージすることをお勧めします。ただし、複数のブランチで作業している場合は、違いを比較対照できることが重要です。このチュートリアルでは、ワークフローを実行して、さまざまなブランチとコミットを比較する方法を確認します。最初に、次の状況を設定しましょう。

C00 => C01 => C03 => C06(マスター)









C02 => C04 => C05(開発)



次の手順が実行されました。





  • C00:hello_world.py(マスターブランチ)を追加しました
  • —開発ブランチを作成しました
  • C01:hello_world.pyを変更して、2番目のhello(マスターブランチ)を追加しました
  • C02:hello_world.pyを変更して、開発ブランチを追加すると、Hello(開発ブランチ)と表示されます
  • C03:readme.txt(マスターブランチ)を追加しました
  • C04:hello_world.pyを変更して、開発ブランチを追加すると、再びHelloと表示されます(開発ブランチ)
  • C05:info.txt(開発ブランチ)を追加しました
  • C06:2行目を追加するようにreadme.txtを変更しました(マスターブランチ)

すべてのコミットの後、「master」ブランチには次のファイルがあります。

hello_world.py
readme.txt



また、「開発」ブランチには次のファイルがあります。

hello_world.py
info.txt


2つのブランチのヘッドを比較する

ブランチの名前を使用して、2つのブランチのヘッドを比較できます。

$git diffマスター..開発

diff - 行く/hello_world.py b/hello_world.py
インデックスe27f806..3899ed3100644
---/hello_world.py
+++ b/hello_world.py
@@-27+27 @@

def main(()。
印刷((「ファーストハロー!」)。
-印刷((「セカンドハロー!」)。
-
+印刷((「開発部門はこんにちはと言います」)。
+印刷((「開発部門はまたこんにちはと言います」)。
もしも__name__ =='__主要__'
主要(()。
diff - 行く/info.txt b/info.txt
新着ファイルモード100644
インデックス0000000..0ab52fd
--- /開発者/ヌル
+++ b/info.txt
@@-00+1 @@
+新しい情報
diff - 行く/readme.txt b/readme.txt
削除されましたファイルモード100644
インデックスe29c296..0000000
---/readme.txt
+++/開発者/ヌル
@@-12+00 @@
-1readme.txtの最初の行
-2readme.txtの2行目

diffコマンドは、変更を再帰的に調べています。次の差分を実行しました:

diff –git a / hello_world.py b / hello_world.py
diff –git a / info.txt b / info.txt
diff –git a / readme.txt b / readme.txt

ここで、「a」は「マスター」ブランチを表し、「b」は開発ブランチを表します。 「a」は常に最初のパラメータに割り当てられ、「b」は2番目のパラメータに割り当てられます。 / dev / nullは、ブランチにファイルがないことを意味します。


コミット間の比較

この例では、「master」ブランチには次のコミットがあります。

$gitステータス
ブランチマスターについて
コミットするものはなく、作業ディレクトリはクリーンです

$gitログ --oneline
caa0ddd C06:2行目を追加するようにreadme.txtを変更しました((マスターブランチ)。
efaba94 C03:readme.txtを追加しました((マスターブランチ)。
ee60eac C01:hello_world.pyを変更して、2番目のhelloを追加しました((マスターブランチ)。
22b4bf9 C00:hello_world.pyを追加しました((マスターブランチ)。

開発ブランチには、次のコミットがあります。

$gitステータス
ブランチ開発について
コミットするものはなく、作業ディレクトリはクリーンです

$gitログ --oneline
df3a4ee C05:info.txtを追加しました((開発ブランチ)。
0f0abb8 C04:開発ブランチを追加するようにhello_world.pyを変更すると、再びHelloと表示されます((開発ブランチ)。
3f611a0 C02:開発ブランチを追加するためにhello_world.pyを変更してHelloと表示する((開発ブランチ)。
22b4bf9 C00:hello_world.pyを追加しました((マスターブランチ)。

C01コミットとC02コミットのhello_world.pyを比較するとします。ハッシュを使用して比較できます。

$git diffee60eac:hello_world.py 3f611a0:hello_world.py

diff - 行く/ee60eac:hello_world.py b/3f611a0:hello_world.py
インデックスe27f806..72a178d100644
---/ee60eac:hello_world.py
+++ b/3f611a0:hello_world.py
@@-27+27 @@

def main(()。
印刷((「ファーストハロー!」)。
-印刷((「セカンドハロー!」)。
+印刷((「開発部門はこんにちはと言います」)。

もしも__name__ =='__主要__'
主要(()。

同じ原則を使用して、同じブランチ内のコミットを比較することもできます。


ビジュアルマージツール

テキストベースの比較を見るのは難しい場合があります。 Gitを設定した場合 difftool のような視覚的なマージアプリケーションで DiffMerge また BeyondCompare 、違いをよりよく見ることができます。

さらなる研究:

参照: