git は時間間隔変更ファイルを抽出します

WBOY
リリース: 2023-05-20 09:48:37
オリジナル
750 人が閲覧しました

Git は、コードの変更やコラボレーションを簡単に管理できるようにする非常に人気のあるバージョン管理ツールです。また、指定したファイルの一定期間内の変更履歴を抽出する必要がある場合、どうすればよいでしょうか?今回は、Git コマンドを使用して、一定期間内のファイル変更レコードを抽出する方法を紹介します。

まず、Git の基本的な知識を理解する必要があります。

  1. Git 提出記録

Git では、すべてのコード提出が記録されます。そしてそれをコミットレコード、つまりコミットとして保存します。各コミットには、異なるコミット レコードを区別するために使用される一意のハッシュ値があります。

  1. Git 送信履歴

すべての送信レコードは Git ウェアハウスに保存され、送信履歴が形成されます。 Git コマンドを使用すると、各送信のハッシュ値、作成者、送信時刻、変更されたファイル、その他の情報を含む送信履歴を表示できます。

  1. Git 時間間隔

Git では、時間間隔を使用して期間を表すことができます。時間間隔を表現するには、次のようないくつかの方法があります。

  • 日付: 2019-01-01
  • 相対時間: 2 週間前
  • 期間: 2019 -01 -01..2019-12-31

これらの基本知識を理解した後、時間間隔内のファイル変更レコードを抽出する方法を見てみましょう。

次の送信履歴があるとします。

commit 2942849f3f44e6da111d2b58fe6c24c156835c90
Author: John Doe <john@example.com>
Date:   Mon Feb 22 11:27:23 2021 +0800

    Add README.md

commit e0fdb2b0364a73f347f1a1b46c13bfbd5ac07a08
Author: John Doe <john@example.com>
Date:   Sat Feb 20 14:52:32 2021 +0800

    Fix typo in index.html

commit 71f6be88b1562fe596c69b88ac9f72dbeac78786
Author: Alice Zhang <alice@example.com>
Date:   Fri Feb 19 22:33:12 2021 +0800

    Update index.html

commit 275711456d94c307b6416d94da74e5c8b98497c7
Author: Bob Chen <bob@example.com>
Date:   Thu Feb 18 09:45:43 2021 +0800

    Add new feature

commit fd9bf6e768bb58d2a1ebf0b604805d7cca34c563
Author: Alice Zhang <alice@example.com>
Date:   Wed Feb 17 15:18:02 2021 +0800

    Initial commit
ログイン後にコピー

送信時間が 2 月 18 日から 2 月 21 日の間に変更されたすべての README.md ファイルを抽出したいと考えています。次のコマンドを使用できます:

git log --since=2021-02-18 
        --until=2021-02-21 
        --pretty=format:"%h - %an, %ar : %s" 
        --name-only 
        --grep='README.md'
ログイン後にコピー

コマンド分析:

  • git log: 送信履歴の表示
  • --since=2021-02-18: 表示の制限2021-02-18
  • --until=2021-02-21 から始まる投稿のみ: 表示を 2021-02-21
  • までの投稿のみに制限します--pretty=format:" %h - %an, %ar : %s": 送信されたハッシュ値、作成者、送信時間、送信情報を含む印刷形式を指定します。
  • --name-only: 変更されたファイル名のみを表示します。ファイルの変更されたコンテンツを表示しません
  • --grep='README.md': README.mdを含む送信レコードのみを検索します

上記のコマンドを実行すると、次の出力は Result になります:

2942849 - John Doe, 29 minutes ago : Add README.md
e0fdb2b - John Doe, 2 days ago : Fix typo in index.html
ログイン後にコピー

ご覧のとおり、時間間隔と grep 条件を満たす送信レコードは 2 つだけです。これらの送信で変更された特定のファイルを確認したい場合は、--stat オプションを追加できます:

git log --since=2021-02-18 
        --until=2021-02-21 
        --pretty=format:"%h - %an, %ar : %s" 
        --name-only 
        --grep='README.md' 
        --stat
ログイン後にコピー

コマンド分析:

  • --stat: ファイルのリストを表示します。各提出物による変更とファイル変更の全体的な状況

上記のコマンドを実行すると、次の結果が出力されます。

2942849 - John Doe, 29 minutes ago : Add README.md
 README.md | 1 +
 1 file changed, 1 insertion(+)

e0fdb2b - John Doe, 2 days ago : Fix typo in index.html
 README.md | 2 ++
 1 file changed, 2 insertions(+)
ログイン後にコピー

最初の提出物が README であることがわかります。 md ファイルが追加され、2 番目の提出では README.md ファイルが変更され、2 行のコンテンツが追加されました。

送信履歴を表示する上記の方法に加えて、gitblame コマンドを使用して、送信のハッシュ値や作成者などのファイルの変更履歴を表示することもできます。

git blame README.md 
        --since=2021-02-18 
        --until=2021-02-21
ログイン後にコピー

コマンド解析:

  • gitblame: ファイルの変更履歴を表示
  • README.md: 表示するファイルを指定
  • --since =2021-02-18: 2021-02-18 からの変更履歴のみ表示に制限します
  • --until=2021-02-21: 2021 年までの変更履歴のみ表示に制限します- 02-21

上記のコマンドを実行すると、次の結果が出力されます:

2942849f (John Doe 2021-02-22 11:27:23 +0800 1) This is a README file.
e0fdb2b0 (John Doe 2021-02-20 14:52:32 +0800 2) It contains information about the project.
e0fdb2b0 (John Doe 2021-02-20 14:52:32 +0800 3)
e0fdb2b0 (John Doe 2021-02-20 14:52:32 +0800 4) Update: fix typo.
ログイン後にコピー

ご覧のとおり、最初の行と 4 行目は 2 つの異なる送信であり、どちらも送信者によって送信されています。ジョン・ドゥは提出した。

要約すると、Git コマンドを使用して、一定期間内のファイル変更レコードを抽出できます。これらのコマンドは習得が簡単で、いくつかの基本概念とパラメータを理解するだけで済みます。一定期間内のコード変更履歴を表示する必要がある場合、これらのコマンドを使用すると、関連する送信レコードをすばやく見つけて、変更されたファイルとコンテンツを表示できます。

以上がgit は時間間隔変更ファイルを抽出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート