プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

Git Diff:ハウツーガイド

git diffコマンドは、2つのコミット内のファイル間、または現在のリポジトリと前のコミット間の違いを表示します。このコマンドは、変更されたファイルのヘッダーとメタデータによって示される変更を表示します。

Gitバージョン管理システムを使用している場合は、リポジトリ内のデータを別のデータソースと比較することをお勧めします。たとえば、2つの異なるコミットを相互に比較したり、2つのファイルを比較したりすることができます。

そこでdiff関数が登場します。Diffingは、2つの入力を受け入れ、それらのデータソース間に存在する変更を提示する関数です。差分関数は、ブランチ、ファイル、およびコミットで実行できます。

このチュートリアルでは、例を挙げて、Gitを使用した差分の基本とgitdiffコマンドの使用方法について説明します。このチュートリアルを読み終えると、gitdiffコマンドの使用に精通するようになります。

GitDiffコマンド

git diffコマンドは、2つのコミット内のファイル間、またはコミットと現在のリポジトリ間の違いを表示します。ファイルに追加、削除、変更されたテキストを確認できます。

gitdiffコマンドの構文は次のとおりです。

git diff

デフォルトでは、gitdiffコマンドはリポジトリへのコミットされていない変更を表示します。

元のファイルから削除された行と、元のファイルに追加または変更された行を確認できます。多くの場合、GitdiffはGitリポジトリ内のブランチを比較するために使用されます。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

コミット間のGit差分

比較するコミットを参照するrefの名前を指定することで、2つのGitコミット間でファイルを比較できます。 refは、現在のブランチを参照するコミットIDまたはHEADの場合があります。

git diff <commit1> <commit2>

Gitリポジトリの2つのコミットを比較してみましょう。

そのためには、まず、ファイルを比較するコミットのIDを取得する必要があります。このタスクは、git log –pretty =onelineコマンドを使用して実行できます。このコマンドは、リポジトリ内のすべてのコミットの簡単な要約を返します。

git log --pretty=oneline

このコマンドは次を返します:

5141ea9c41cdc7152408bfcab54a910f34441855 (HEAD ->; master) feat: Update README.md
749055ee99df2aa6f5adc4cbe4bfc708395f1c2e docs: Create README.md

ここで、これら2つのコミットを比較するとします。次のコマンドを使用してこれを行うことができます:

git diff 5141ea9c41cdc7152408bfcab54a910f34441855 749055ee99df2aa6f5adc4cbe4bfc708395f1c2e

上記のコマンドは、2つのコミット間で差分操作を実行します。

ブランチ間のGit差分

diffコマンドを使用して2つのGitブランチを比較するには、比較する2つのブランチを引数として指定します。各ブランチ名の間に2つのドットを使用する必要があります。これらのドットは、各ブランチの最新のコミットを読み取り、それらを比較することを示しています。

git diff <branch1>..<branch2>

「master」ブランチをリポジトリ内の「dev-v0.9」というブランチと比較したいとします。次のコマンドを使用してこれを行うことができます:

git diff master dev-v0.9

このコマンドを実行すると、コードベースの「master」ブランチと「dev-v0.9」ブランチの間で差分が実行されます。

同様に、2つの異なるブランチ間で特定のファイルを比較できます。そのためには、上記と同じ構文を使用し、さらに比較するファイルを指定できます。

「master」ブランチと「dev-v0.9」ブランチ間でファイルREADME.mdを比較したいとします。このコードを使用してこれを行うことができます:

git diff master dev-v0.9 ./README.md

これにより、ファイルREADME.md(現在のディレクトリにあり、「。/」構文で示されます)が「master」ブランチと「dev-v0.9」ブランチ間で比較されます。

GitDiffコマンドの例

空のリポジトリを初期化し、README.mdファイルでリポジトリを開始したいとします。次の文を含むREADME.mdファイルをリポジトリに作成しました:

これはGitの差分機能の例です。

ファイルとコミットの準備

git commitコマンドを使用して、このファイルでコミットを作成します:

git commit

これにより、リポジトリに加えた変更を保存できます。 gitコマンドは次を返します:

[master (root-commit) 749055e] docs: Create README.md
1 file changed, 1 insertion(+)
create mode 100644 README.md

この段階でgitdiffコマンドを実行しても、何も起こりません。これは、リポジトリが初期化されており、リポジトリ内のファイル間で変更がないためです。基本的なリポジトリができたので、リポジトリ内のファイルの内容を変更できます。これにより、gitdiffコマンドの動作を確認できます。

「この行をファイルに追加しました」という文を追加するとします。 README.mdファイルに。次のコマンドを使用してこれを行うことができます:

echo "We just added this line to our file." >> README.md

上記のコマンドは、README.mdファイルに文を追加します。

これは、最初のREADME.mdファイルとリポジトリ内の現在のREADME.mdファイルに違いがあることを意味します。

git diffコマンドを実行すると、これら2つのファイルの違いを確認できます。デフォルトでは、gitdiffコマンドは最新のコミットとリポジトリの現在の状態の間のすべてのファイルの差分を生成します。

コミット間でGit差分を実行する

コマンドを実行すると、次の応答が返されます。

diff --git a/README.md b/README.md
index f808522..f08e544 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
+We have just added this line to our file.

これはGitの差分機能の例です。

これは、gitdiffコマンドの典型的な結果です。結果は、ファイルに追加または削除されたものを組み合わせた差分形式で示しています。

git diffコマンドは、最後のコミットと現在のリポジトリの間のすべてのファイルのすべての変更のリストを返します。

リポジトリ内の特定のファイルに加えられた変更を取得する場合は、そのファイルを3番目のパラメーターとして指定できます。 README.mdファイルに加えられた変更のみを確認したいとします。

この例では、README.mdファイルのみを変更したため、とにかくそれらの変更のみが表示されます。ただし、より大きなリポジトリで作業している場合は、1つのファイルの変更のみを比較したい場合があります。これを行うには、次のコマンドを使用できます:

git diff README.md

このコマンドを使用すると、README.mdファイルの現在のバージョンをリポジトリにコミットされた最後のバージョンと比較できます。

GitDiffの内訳

Git diffは、リポジトリ内のファイル間の変更を分析するために使用できるいくつかのコンポーネントを備えています。前の例を参照して、それらを分解してみましょう。

入力ファイル

差分の最初のコンポーネントは入力ファイルです 。差分のこの部分は、差分で比較されているファイルを示します。

現在のバージョンのコードのREADME.mdファイルと最後のバージョンのコードのREADME.mdファイルを比較しています。これは、コードの最初の行に記載されています:

diff --git a/README.md b/README.md

メタデータ

次に、差分にはメタデータが含まれています Gitリポジトリ用。このメタデータには、ファイルに加えた変更を追跡するためにGitが使用するオブジェクトバージョンラベルが表示されます。

この情報は、diffコマンドのほとんどの場合に使用されることはめったにありません。上記の例では、メタデータは次のようになります。

index f808522..f08e544 100644

マーカーの変更

Git diff出力の次の部分は、変更マーカーです。 。これらのファイルパターンマーカーは、ファイルに加えられた変更の種類を示します。上記の例の変更マーカーは次のとおりです。

--- a/README.md
+++ b/README.md

これらのマーカーは、a / README.mdからの変更が行われたことを示し(マイナス記号で示されます)、b / README.md(プラス記号で示されます)に反映されます。

コードの変更

最後に、diffはコードに加えられた変更のリストを返します。 。完全なファイル比較とは異なり、diffは変更されたファイルのセクションのみを表示します。この例では、ファイルに1行を追加したところ、次の結果が返されました。

@@ -1 +1,2 @@
 This is an example of the Git diff feature.
+We have just added this line to our file.

最初の行は、ファイルに加えられた変更の要約です。これは、2行目(2)から始まる1行のコードをファイル(+1)に追加したことを示しています。

次に、加えられた変更のリストが表示されます。ご覧のとおり、「この行をファイルに追加しました。」という行を追加したため、その行が差分に表示されます。プラス記号は、その行をファイルに追加したことを示しています。

結論

Diffingは、Gitリポジトリ内の2つのファイル、ブランチ、またはコミットを比較できるGitの便利な機能です。これにより、リポジトリ内の特定の時点以降に行われた変更を確認できます。

このチュートリアルでは、Gitを使用した差分の基本と、gitdiffコマンドを使用して差分操作を実行する方法について説明しました。これで、エキスパートのようにgitdiffコマンドの使用を開始するために必要な知識を身に付けることができました。

Gitに関するその他の学習リソースについては、Gitの学習方法ガイドをご覧ください。


  1. Git Cherry Pick:ステップバイステップガイド

    初心者の開発者として、私たちは単に繰り返しを通してgitを学びます。 git pull、git push、およびgitcommitがそれぞれ何を意味するのかをすばやく学びます。より大きなプロジェクトでの作業に移行し、チームと協力するにつれて、プロジェクトで作業する個人間でコードベースのバージョン管理履歴をまっすぐに保つのに役立つ、より高度なgitコマンドを学び始めます。 そのようなコマンドの1つは、gitcherry-pickです。 gitcherry-pickコマンドは、あるブランチから特定のコミットを取得し、それらを別の機能ブランチまたはマスターブランチのHEADにアタッチする場合に

  2. SQL CREATE TABLE:ハウツーガイド

    SQL CREATE TABLEステートメントは、データベースにテーブルを追加します。このステートメントを使用して、新しいテーブルの列の名前と、各列に格納できるデータのタイプを指定できます。テーブルでのデータの表現方法に関連する制約を指定することもできます。 クエリを実行してデータベースにデータを保存する前に、データを保存するテーブルを作成する必要があります。テーブルは、データベース内のすべてのデータが格納される場所です。各テーブルには、テーブル内の1つのレコードに関するデータを含めることができます。 「CREATETABLE」ステートメントを使用して、データベースに新しいテーブルを作成