履歴を確認する
- [アーティクル]
-
-
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git では、親リンク、作成者の詳細、タイムスタンプなどのコミット メタデータを使用して、リポジトリでの変更の履歴が追跡されます。 Git 履歴を確認すると、ファイルがいつ変更されたか、誰が変更したか、どのような変更が行われたかを確認できます。
ユーザーが pull request を使用して機能のブランチを作成し、ターゲット ブランチにマージする場合、ターゲット ブランチの開発履歴は、直線的な時系列とはならない場合があります。 そのため、ターゲット ブランチのファイルへの変更履歴を確認する場合、変更の元の日付だけでなく、マージ戦略とマージ日付もコミットの順序に影響していますので注意してください。 たとえば、main
ブランチでの最新のコミットでは、3 方向マージを使用して main
ブランチにマージされたばかりの変更が導入される場合がありますが、この変更は、機能ブランチで数週間前に行われている場合があります。
この記事では、次の方法について説明します。
- ファイルのバージョンを比較する
- ファイルを復元する
- ブランチを比較する
Visual Studio 2022 と Git を併用する方法については、「Visual Studio で Git を使用してバージョン コントロールを簡単にする方法」を参照してください。
ファイルのバージョンを比較する
特定のファイルの変更がいつどのように行われたかを把握したい場合、異なるブランチ (多くの場合) での異なるコミットで登録された同じファイルの異なるバージョンを比較することが必要になる場合があります。
Azure DevOps チーム プロジェクト サイトでは、同じブランチでのコミットで登録された同じファイルの 2 つのバージョンを比較できますが、ブランチ間でファイルのバージョンを比較することはサポートされていません。
Web ブラウザーから、Azure DevOps 組織のチーム プロジェクトを開きます。 [リポジトリ] > [ファイル] ビューで、ファイルを選択し、[比較] タブを選択します。
[比較] タブで、比較するファイル バージョンが含まれる 2 つのコミットを選択します。 差分ビューに、ファイルの新しい行、削除された行、または変更された行が表示されます。
注意
GitHub では、異なるブランチでの異なるコミットで登録された同じファイルの 2 つのバージョンを比較できます。 比較するには、GitHub リポジトリの URL に /compare/<commit1>..<commit2>
を追加して比較ページに移動します。 比較ページには、異なる各ファイルの差分ビューが含まれます。 GitHub でのコミットの比較について詳しくは、「コミットの比較」を参照してください。
Visual Studio 2022 では、[Git] メニュー、[Git 変更] を使用して、およびソリューション エクスプローラーのコンテキスト メニューを通じて、Git バージョン コントロール エクスペリエンスが提供されます。 Visual Studio 2019 バージョン 16.8 には、チーム エクスプローラーの Git ユーザー インターフェイスも用意されています。 詳細については、「Visual Studio 2019 - チーム エクスプローラー」タブを参照してください。
Visual Studio では、同じブランチ内の同じファイルの 2 つのバージョンを比較できますが、ブランチ間でファイルのバージョンを比較することはサポートされていません。
ソリューション エクスプローラーで、ファイルを選択し、ファイルのコンテキスト メニューから [Git] > [履歴の表示] を選択して、選択したファイルの [Git 履歴] タブを開きます。
[Git 履歴] タブで、コミットのコンテキスト メニューから [以前と比較] を選択して、選択したコミットと以前のコミットを比較する [差分] タブを開きます。
または、2 つのコミットを選択し、いずれかのコミットのコンテキスト メニューから [比較] を選択して、選択した 2 つのコミットを比較する [差分] タブを開きます。
[差分] タブには、ファイルの新しい行、削除された行、または変更された行が表示されます。
チーム エクスプローラーでは、この機能はサポートされていません。
git diff コマンドを使用して、異なるブランチでの異なるコミットで登録された同じファイルの異なるバージョンを比較できます。 git log コマンドは、比較するファイル バージョンが含まれるコミットを特定するのに役立ちます。
git log
を使用し、ファイルを指定して、そのファイルを変更したコミットをリストします。
git log <file>
既定では、このコマンド出力は、現在のブランチの最新のコミットから開始され、その後、各コミットのメタデータ内の親リンクをたどることにより、(ブランチに関係なく) 祖先のコミットまで逆方向に反復処理します。
コマンド git log index.html
の出力例を次に示します。
commit bbc3b679197b659544a6f8070c79fb535b496613
Date: Thu Jun 30 13:42:50 2021 -0400
update landing page
commit e5402fe710c25eca1b96a4e238eee9c01ed41c6a
Date: Thu Jun 30 13:42:23 2021 -0400
initial commit
git diff
を使用し、ファイルと 2 つのコミットを指定して、コミットされたファイルのバージョンがどのように異なるかを確認します。
git diff <commit1> <commit2> <file>
コマンド git diff bbc3b67 e5402fe index.html
の出力例を次に示します。
- <link rel="stylesheet" href="app.cs"/>
+ <link rel="stylesheet" href="fabrikam.cs"/>
この出力では、1 つの行が削除され、1 つの行が追加されたことが示されています。
Git のログ出力を制限する
git log
でリストされるコミットを制限するために、作成者、日付、メッセージ、変更されたコンテンツなどでフィルター処理できます。 次に例を示します。
git log --author=frank@fabrikam.com index.html
では、指定した作成者によるコミットのみがリストされます。
git log --since="2022-5-1"
では、指定した日付の後に作成されたコミットのみがリストされます。
git log --before="yesterday"
では、指定した相対日付の前に作成されたコミットのみがリストされます。
git log --grep="css change"
では、メッセージ内に指定したテキストが含まれるコミットのみがリストされます。
git log -S"myVariable"
では、指定した文字列を導入または削除するコミットのみがリストされます。
git log -G"myVar.*"
では、指定した正規表現文字列を導入または削除するコミットのみがリストされます。
git log -3
では、最後の 3 つのコミットのみがリストされます。
コミットのリストのために、いくつかの書式設定オプションがあります。 次に例を示します。
git log --abbrev-commit
では、省略形の ID (SHA-1 チェックサム) を使用してコミットがリストされます。
git log --oneline
では、1 行の省略形式で各コミットがリストされます。
git log --patch index.html
では、変更の差分と共に各コミットがリストされます。
ファイルを復元する
後のコミットでファイルが編集、削除、または名前変更された場合でも、Git 履歴からその特定のバージョンのファイルを復元できます。 以前のバージョンのファイルを復元しても、変更を含む新しいコミットは作成されません。 復元したファイルのバージョンでブランチを更新するには、変更をコミットする必要があります。
Azure DevOps チーム プロジェクト サイトでは、特定のコミットによって行われたすべての変更を元に戻すことができますが、コミット内での特定のファイルへの変更は元に戻すことができません。
Visual Studio では、同じブランチ内の同じファイルの 2 つのバージョンを比較できますが、ブランチ間でファイルのバージョンを比較することはサポートされていません。
ソリューション エクスプローラーで、ファイルを選択し、ファイルのコンテキスト メニューから [Git] > [履歴の表示] を選択して、選択したファイルの [Git 履歴] タブを開きます。
[Git 履歴] タブで、コミットのコンテキスト メニューから [以前と比較] を選択して、選択したコミットと以前のコミットを比較する [差分] タブを開きます。
または、2 つのコミットを選択し、いずれかのコミットのコンテキスト メニューから [比較] を選択して、選択した 2 つのコミットを比較する [差分] タブを開きます。
[差分] タブには、ファイルの新しい行、削除された行、または変更された行が表示されます。
Visual Studio 2019 バージョン 16.8 以降のバージョンでは、チーム エクスプローラーの Git ユーザー インターフェイスが維持される一方、Git バージョン コントロール エクスペリエンスが提供されます。 チーム エクスプローラーを使用するには、メニュー バーから [ツール]>[オプション]>[プレビュー機能]>[New Git User Experience] (新しい Git ユーザー エクスペリエンス) のチェック ボックスをオフにします。
ソリューション エクスプローラーで、ファイルを選択し、ファイルのコンテキスト メニューから [Git] > [履歴の表示] を選択して、選択したファイルの [Git 履歴] タブを開きます。
[Git 履歴] タブで、コミットを選択し、コミットのコンテキスト メニューから [コミットの詳細を表示] を選択して、[コミットの詳細] ビューを開きます。
[コミットの詳細] ビューで、ファイルを選択し、ファイルのコンテキスト メニューから [開く] を選択して、前のバージョンのファイルを新しいタブで開きます。
メニュー バーから [ファイル] > [名前を付けて保存] を選択して、復元されたバージョンのファイルを保存します。
git checkout コマンドまたは git show コマンドを使用して、Git 履歴から特定のバージョンのファイルを復元できます。
git checkout では、ファイルとコミットを指定すると、以前にコミットしたバージョンにファイルが戻されます。
git checkout <commit> <file>
たとえば、git checkout 85435fac src/app.ts
では、src/app.ts
ファイルがコミット 85435fac
のそのバージョンに戻されます。
git show では、以前にコミットしたファイル バージョンの内容が出力されます。この内容は、出力ファイルにリダイレクトできます。
git show <commit>:<file> > <output file>
たとえば、git show 85435fac:src/app.ts > /archive/oldapp.ts
では、コミット 85435fac
の app.ts
の内容が /archive/oldapp.ts
に書き込まれます。
ブランチを比較する
ローカル ブランチまたはリモート ブランチを比較して、マージまたはリベースの結果生じた変更を確認できます。 ブランチ比較を使用すると、マージの競合がないかチェックでき、他のユーザーによる変更が自分の作業にどのように影響するかを確認できます。
Visual Studio 2019 以前のバージョンではブランチ比較がサポートされていないため、これらのバージョンのいずれかを使用している場合は、Git コマンド ラインまたは Web ブラウザーを使用してブランチを比較できます (リポジトリが Azure Repos または GitHub でホストされている場合)。 Visual Studio 2022 では、「ブランチの比較」で説明されているように、ブランチの比較がサポートされています。
Web ブラウザーから、Azure DevOps 組織のチーム プロジェクトを開きます。 [リポジトリ] > [ブランチ] ビューで、ブランチの省略記号を選択し、[ブランチの比較] を選択して [ブランチの比較] ビューを開きます。
[ブランチの比較] ビューで、比較する 2 つのブランチを選択します。 [ファイル] タブを選択して、変更された各ファイルの新しい行、削除された行、または変更された行を示す差分ビューを表示します。
注意
GitHub では、ブランチの比較がサポートされています。 2 つのブランチを比較するには、GitHub リポジトリの URL に /compare/<branch1>...<branch2>
を追加して比較ページに移動します。 比較ページには、異なる各ファイルの差分ビューが含まれます。 GitHub でのブランチの比較について詳しくは、「ブランチの比較」を参照してください。
ブランチを現在のブランチと比較するには、リポジトリの [ブランチ] ペインでブランチを右クリックし、比較オプションを選択します。 コンテキスト メニューにより、現在のブランチとターゲット ブランチの名前が示されます。
Visual Studio 2019 では、ブランチ比較はサポートされていません。 ただし、リポジトリが Azure Repos または GitHub でホストされている場合、Git コマンド ラインまたは Web ブラウザーを使用してブランチを比較できます。
ヒント
チーム エクスプローラーの [ホーム] ビューから [Web ポータル] を選択して Web ポータルにアクセスできます。
2 つのローカル ブランチまたはリモート ブランチを比較するには、Git diff
コマンドを使用してブランチ名を指定します。
git diff <branch1> <branch2>
Git は、一方のブランチの最新のコミットと、もう一方のブランチの最新のコミットを比較します。 差分出力により、2 つのブランチのファイル間の削除と追加が示されます。
ローカル ブランチとリモート ブランチを比較するコマンド git diff users/frank/feature origin/main
の出力例を次に示します。
index 36843b8..03afc4b 100644
--- a/tsapp/index.html
+++ b/tsapp/index.html
@@ -4,7 +4,7 @@
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
- <link rel="stylesheet" href="fabrikam-test.css" type="text/css" />
+ <link rel="stylesheet" href="fabrikam.css" type="text/css" />
<script src="app.js"></script>
</head>
...
--- a/tsapp/app.ts
+++ b/tsapp/app.ts
constructor(element: HTMLElement) {
this.element = element;
- this.element.innerHTML += "The time is: ";
+ this.element.innerHTML += "The time is now: ";
this.span = document.createElement('span');
this.element.appendChild(this.span);
this.span.innerText = new Date().toUTCString();
比較を特定のファイルに絞り込むには、diff
コマンドでファイルを指定します。
git diff <branch1> <branch2> <file>
たとえば、git diff users/frank/feature origin/main index.html
では、index.html
ファイルの差分のみが生成されます。
次のステップ
関連記事