Gitログを使用してプロジェクトの履歴を検査する方法

Gitログを使用してプロジェクトの履歴を検査する方法

Gitが提供する最も基本的なサービスの1つは、プロジェクトの履歴です。 Gitはリポジトリ内で行われたファイルへのすべての変更を追跡するため、非常に強力なロギング機能を提供できます。プロジェクトの履歴はさまざまな方法でクエリでき、1つの柔軟なコマンドを使用してさまざまなデータを抽出して表示できます。





NS gitログ コマンドは巨大で、通常のGitコマンドの中で最大です。そのマニュアルは2,500行以上の長さです。幸運にも、 gitログ いくつかの重要なオプションから、最も便利な動作の多くを提供します。





デフォルトの動作での基本的なロギング

デフォルトでは、 gitログ は、コミットの逆時系列リストを示しています。各コミットには、ハッシュ、作成者、日付、およびコミットメッセージが含まれます。





このコマンドは、ポケットベル(less、moreなど)を使用して完全な出力を表示するため、結果を簡単にナビゲートできます。ほとんどのページャなど、選択したプログラムを使用するようにGitを構成できます。

これがからのgitログ出力です gitソースコードのリポジトリ 自体:



commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origin/master, origin/HEAD)
Author: Junio C Hamano
Date: Mon Jun 14 13:23:28 2021 +0900
The second batch
Signed-off-by: Junio C Hamano

結果はコミットハッシュで始まります( 670 ...)そのコミットを現在指しているブランチのリストが続きます( HEAD->マスター 、 NS。)

トレントのダウンロード速度を上げる方法

次の行は、このコミットの作成者を説明し、名前と電子メールアドレスを示しています。





コミットの完全な日付と時刻は次の行に続きます。

最後に、コミットメッセージの全内容が表示されます。コマンドラインオプションを使用して、gitlogが提供する他のほとんどすべてを制御できます。オプションには主に2つのタイプがあります。





  • Gitが各コミットを表示する方法を定義するフォーマット。
  • どのコミットを定義するフィルタリング gitログ 含まれています。

コマンドラインオプションに加えて、git logは、ファイル、コミット、ブランチ、またはその他のタイプの参照を指定する引数を受け入れます。これらはさらにフィルタリングを適用します。

Gitログ出力のフォーマット

最も簡単な調整の1つは --oneline 非常に短い出力を生成するオプション:

git log --oneline

ログの各行には、省略されたコミットハッシュとコミットメッセージの件名のみが含まれるようになりました。これは、プロジェクトへの最近のコミットの概要を取得するための優れた方法です。

残念ながら、他のコンテキストがないため、この情報が常に役立つとは限りません。それはあなたにプロジェクトの漠然とした感じを与えるかもしれませんが、それは著者とファイルについての日付と他の有用な情報を欠いています。

ブランチグラフの表示

NS - グラフ オプションを使用すると、ブランチ間の関係を視覚化できます。これは非常に基本的ですが、複雑な歴史を解き明かすのに役立ちます。

git log --oneline --graph

関連している: Gitで新しいブランチを作成する方法

カスタマイズされたプリティ出力

を使用して詳細に指定することにより、より複雑なフォーマットを実現できます。 - かわいい オプション。構文は非常に単純なものからはるかに複雑なものになります。 詳細については、マニュアルを参照してください

PCでhdrを有効にする方法
git log --pretty=short

本質的にと同じです gitログ 日付または完全なメッセージなし:

git log --pretty=oneline

と同等です git log --oneline

git log --pretty=fuller

多くの詳細が含まれています。それは、理論的には異なる人々であるかもしれない作者とコミッターさえも分離します:

とともに フォーマット: バリアントでは、さまざまなデータに置き換えられるプレースホルダーなど、必要なコンテンツを含む文字列を指定できます。プレースホルダーの例を次に示します。

  • %NS ハッシュをコミットする
  • %NS 省略されたコミットハッシュ
  • %に 著者の日付
  • %と 著者の日付、相対
  • %NS メッセージの件名をコミットする
  • % NS メッセージ本文をコミットする
  • %NS 省略された親ハッシュ

出力に固定文字を追加して色を付けることができます。この例は、日付形式のバリエーションも示しています。

git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short

括弧が日付を囲んでいることに注意してください。どのフォーマットを選択しても、出力をパイプラインや他の形式のテキスト処理で使用できるようにする場合は、出力の各部分をどのように区切るかを検討する必要があります。

ログに差分を表示する

リポジトリの履歴を見るときの重要な詳細は、差分自体です。結局のところ、これらはコードで実際に変更されたものを表しています。手始めに、を使用して各コミットと一緒に変更の概要を取得できます --shortstat

git log --shortstat

これにより、次のような行が追加されます。

1 file changed, 48 insertions(+), 2 deletions(-)

各コミットの最後に。この種の要約は、たとえばGitHubのページ全体でよく見られます。これは、特定のコミットの範囲をすばやく判断するための便利な方法です。詳細については、を使用して完全なパッチ出力(差分)を含めることができます。 -NS 国旗:

git log -p

Gitログ出力のフィルタリング

どのフォーマットを適用しても、現在のブランチのすべてのコミットの完全なログが表示されます。 Gitはそれらをページに分割しますが、それでも大量の出力になる可能性があります。次のオプションを使用すると、ログに含めるコミットをカスタマイズできます。

金額による制限

結果をトリミングして最新のいくつかのコミットを表示するだけの場合は、 -[番号] 構文:

git log -2

日付による制限

コミットのセットを特定の日付範囲に制限するには、 - 以来 (( - 後 ) と - それまで (( - 前 )オプション。これらはそれぞれISO8601形式の日付を取ります。あなたはどちらかを使うことができます - 以来 また - それまで 単独で、または両方を一緒に使用して範囲を指定します。オプション - 後 - 前 同義語です。

git log --since='2021-01-01' --until='2021-05-01'

ファイルによる制限

Gitログは、リポジトリ内のすべてのファイルではなく、特定のファイルに焦点を当てることができます。これは、特定のファイルが時間の経過とともにどのように変化したかを知るのに役立ちます。 gitコマンドの最後にファイル名を追加するだけです。

git log filename

影響を受けたコミットのみが表示されます ファイル名

ブランチ間の違い

ブランチのログを表示するときに、いくつかの固有の要件がある場合があります。たとえば、履歴全体を表示するのではなく、その特定のブランチで何が変更されたかを確認したい場合があります。 Gitログは ref1..ref2 構文。使用できるわずかに異なる3つのアプローチがあります。

  1. メインにあるがブランチにはないコミットを表示する:git log --oneline origin/branch..origin/main
  2. ブランチにあるがメインではないコミットを表示する:git log --oneline origin/ main ..origin/ branch
  3. ブランチまたはメインにのみ存在するコミットを表示します:git log --oneline origin/branch ... origin/main

2つのタグの違い

を使用してブランチ間の履歴を表示できるのと同じように ref1..ref2 構文では、同じ方法でタグ間の履歴を表示することもできます。結局のところ、タグとブランチの両方が参照のタイプです。

git log --abbrev-commit --pretty=format:'%h %ar %s' v2.32.0-rc3..v2.32.0

大規模なプロジェクトのリリースノートを準備している場合は、 git shortlog 最初の寄港地になるはずです。それは彼らと一緒にコミット主題を持つ著者のリストを作成します。 git logと同様の方法で、参照範囲を渡して履歴を制限できます。

git shortlog v2.32.0-rc3..v2.32.0

NS gitshowコマンド よりもさらに用途が広い gitログ 。コミット履歴を超えて、タグやその他のタイプのgitオブジェクトを処理できます。それは多くのオプションを共有しています gitログ 、ただし、実際に必要になるのは、下位レベルの詳細を掘り下げる必要がある場合のみです。

Gitログで過去を確認する

Gitログは複雑なコマンドですが、最も基本的なオプションから多くの用途を得ることができます。リポジトリの履歴を閲覧することは、変更が発生する頻度と変更を行う人の数を理解するための優れた方法です。プロジェクトの歴史をよく理解すると、自分でプロジェクトに貢献できる素晴らしい立場になります。

インターネット上で最も恐ろしいビデオ
共有 共有 つぶやき Eメール ソーシャルコーディングトレンドに参加し、GitHubリポジトリに貢献する

コーディングの力を発揮して、オープンソースプロジェクトを支援したいですか? GitHubに貢献する方法は次のとおりです。

次を読む
関連トピック
  • プログラミング
  • GitHub
  • コーディングのヒント
著者について ボビージャック(58の記事が公開されました)

ボビーは、20年のほとんどの間ソフトウェア開発者として働いた技術愛好家です。彼はゲームに情熱を注いでおり、Switch Player Magazineのレビュー編集者として働いており、オンラインパブリッシングとウェブ開発のあらゆる側面に没頭しています。

ボビージャックのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください