ほとんどすべてのバージョン管理システムには、分岐オプションがあります。しかし、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
@@-2、7+2、7 @@
def main(()。:
印刷((「ファーストハロー!」)。
-印刷((「セカンドハロー!」)。
-
+印刷((「開発部門はこんにちはと言います」)。
+印刷((「開発部門はまたこんにちはと言います」)。
もしも__name__ =='__主要__':
主要(()。
diff - 行くに/info.txt b/info.txt
新着ファイルモード100644
インデックス0000000..0ab52fd
--- /開発者/ヌル
+++ b/info.txt
@@-0、0+1 @@
+新しい情報
diff - 行くに/readme.txt b/readme.txt
削除されましたファイルモード100644
インデックスe29c296..0000000
---に/readme.txt
+++/開発者/ヌル
@@-1、2+0、0 @@
-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.pydiff - 行くに/ee60eac:hello_world.py b/3f611a0:hello_world.py
インデックスe27f806..72a178d100644
---に/ee60eac:hello_world.py
+++ b/3f611a0:hello_world.py
@@-2、7+2、7 @@
def main(()。:
印刷((「ファーストハロー!」)。
-印刷((「セカンドハロー!」)。
+印刷((「開発部門はこんにちはと言います」)。
もしも__name__ =='__主要__':
主要(()。
同じ原則を使用して、同じブランチ内のコミットを比較することもできます。
ビジュアルマージツール
テキストベースの比較を見るのは難しい場合があります。 Gitを設定した場合 difftool のような視覚的なマージアプリケーションで DiffMerge また BeyondCompare 、違いをよりよく見ることができます。
さらなる研究:
参照:
- Gitチュートリアル:差分およびマージツール 、Youtube
- http://coding4streetcred.com/blog/post/configure-diffmerge-for-your-git-difftool
- http://gitbaby.com/how-to-diff-one-file-to-an-arbitrary-version-in-git.html
- https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
- https://git-scm.com/book/id/v2/Git-Branching-Branches-in-a-Nutshell
- https://git-scm.com/docs/git-diff
- https://git-scm.com/docs/git-difftool
- https://sourcegear.com/diffmerge/
- https://sourcegear.com/diffmerge/webhelp/sec__git__linux.html
- https://stackoverflow.com/questions/9834689/comparing-two-branches-in-git
- https://veerasundar.com/blog/2011/06/git-tutorial-comparing-files-with-diff/
- https://www.scootersoftware.com/features.php
- https://www.scootersoftware.com/support.php?zz=kb_vcs