2

リビジョンのあるレポがあるとしA-B-C-D-E-F-G-H-I-J-K-L-Mます。ファイルは、 、、 にfoo.txt変更 (または作成) されて記録されます。リビジョンとfoo.txt の履歴を追加でバインドして、. それを達成する方法はありますか?BGJCEB-C-E-G-Jfoo.txtgit log -- foo.txt

これが不可能な場合、適切な代替手段はありますか?

(詳細は後述)

その理由は、A~M は古いプロジェクトのスナップショットであり、後で git リポジトリにインポートされたためです。コース中に何かが起こり、スナップショット C と E の foo.txt の実際の状態が欠落していましたが、両方とも実際には foo.txt が変更されています。ただし、C と E の変更メッセージ (コミット メッセージ) は、foo.txt の変更過程と関係があり、foo.txt の履歴リストに含まれている必要があります。したがって、リビジョン C および E で実行されて有効になったgit log -- foo.txtかのように、それらのコミット メッセージを受信したいと考えています。git add -- foo.txt

4

1 に答える 1

2

を実行するgit log -- foo.txtと、そのファイルに変更が加えられたコミットのみが取得されます。したがって、ツリー全体ではなくコミット AD のみを取得する理由は、B & C で foo.txt が変更されていないためです。

Git は、コミットごとにシステムの変更を保存します。コミット B と C では、foo.txt に変更はありません。したがって、コミットはそのファイルに変更を加えません。一部が実行されたかどうかgit add foo.txtは関係ありません。ファイルに変更はないため、追加またはコミットするものは何もありません。

ファイル名を追加すると、ファイルの変更を追跡できるため、プロジェクトの進行中にファイルがどのように変更されたかを確認できます。

A と D の間のすべてのコミットを取得する場合は、 を実行しますgit log A..D--name-only各コミットで変更されたファイルを表示するオプションを追加するか-p、そのコミットで行われたすべての変更を表示するオプションを使用できます。

于 2013-10-23T13:24:57.063 に答える