Git のファイル、コミット、ブランチを比較する
この記事では、git diff
コマンドを使用して Git のファイル、コミット、およびブランチを比較する方法を説明します。git diff
コマンドを使用して、2つのコミット、またはリポジトリの現在の状態と前のコミットの結果として生じたファイル間の差異を表示します。
このコマンドは、データソースを比較するときに便利です。
git diff
コマンド
構文:
git diff
デフォルトでは、コマンドはリポジトリ内のコミットされていない変更を表示します。
このコマンドは、元のファイルで削除および追加されたすべてのコード行を表示します。いくつかの例を見てみましょう。
Git Diff コミット
以下のコンテキストで、同じブランチ内の 2つのコミットを比較できます。
git diff <commit-1-id> <commit-2-id>
例:
これがローカルリポジトリのコミット履歴です。
$ git log --oneline
c84e6f9 (HEAD -> main) Third Code Correction
9af4e38 Second Code Correction
a45ca97 First Code Correction
8c1cefc My Commit Message
c5bf6c8 Sixth Commit
3b641e0 Fourth Commit
21ca1e7 Third Commit
b2f7710 Initial commit
Third Code Correction
と Second Code Correction
のコミットの違いを確認したいシナリオでは、どのように対処しますか?
以下に示すように、git diff
コマンドを実行し、2つのコミットのハッシュについて言及します。
$ git diff 9af4e38 c84e6f9
diff --git a/insert.php b/insert.php
index 985a7af..a5f31c6 100644
--- a/insert.php
+++ b/insert.php
@@ -1,7 +1,6 @@
<?php
// Use ls command to shell_exec function
$output = shell_exec('git');
-
// Display the list of all files and directories
echo "<pre>$output</pre>";
?>
上記の出力は、行 67
での違いを示しています。3 番目のコード修正
コミットにより、67
行の空のコード行が削除されたことがわかります。
Git Diff Branches
リポジトリ内の 2つのブランチを比較するには、このコマンドを実行します。
git diff <branch1> <branch2>
master
ブランチと dev.7
という別のブランチを比較する場合は、このコマンドを実行します。
git diff master dev.7
ブランチ間に 2つのドットを追加すると、Git は 2つの間の最新のコミットを比較します。
Git Diff ファイル
以下のコンテキストで git diff
コマンドを使用して、リポジトリ内の 2つのファイルを比較できます。
git diff <path-to-file1> <path-to-file2>
例:
$ git diff Head:sample.php HEAD:insert.php
diff --git a/sample.php b/insert.php
index dce9c57..a5f31c6 100644
--- a/sample.php
+++ b/insert.php
@@ -1,14 +1,6 @@
<?php
- $a= 23;
- $nationality = "Dutch";
- //applying conditions on nationality and age
- if ($nationality == "Dutch")
- {
- if ($a >= 18) {
- echo "Eligible to vote";
- }
- else {
- echo "Not eligible to vote";
- }
- }
+// Use ls command to shell_exec function
+$output = shell_exec('git');
+// Display the list of all files and directories
+echo "<pre>$output</pre>";
git diff
コマンドでブランチを指定した方法に注意してください。ファイルが異なるブランチにある場合は、ファイルごとにブランチを指定する必要があります。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn