23

多くの検索を行った結果、移動したファイルの完全な履歴を Git で、さらに重要なことに Gitk で簡単に表示できる満足のいく方法が見つかりませんでした。git log --follow [filePath]andを使用gitk --follow [filePath]すると、ファイルが関与していたコミットも表示されますが、移動前のファイルの実際の変更履歴は表示されません。このように、大雑把ではあるが単純な回避策を考え出しました。

  1. gitk移動したファイルに対して次の操作を行いますgitk [newFilePath]。最初のコミットの SHA1 ID をコピーします。これは、ファイルが移動されたコミットである必要があります。
  2. gitkコピーした SHA1 ID: に対してaを実行しますgitk [SHA1ID]。最新のコミットは、移動が発生したときでなければなりません。移動したファイルを見つけて、古いパスをコピーします。
  3. gitk先ほどコピーした SHA1 ID と古いファイル パスに対して次の操作を行います。gitk [SHA1ID] -- [oldFilePath]

このプロセスにより、移動前のファイルの履歴を表示できます。複数の移動があった場合、上記のプロセスを繰り返すことができます。

この問題に対するより良い解決策があれば、特にこれらの手順を組み合わせて完全な履歴と動きを表示する方法がある場合は、高く評価されます。

4

4 に答える 4

13

ファイルの名前が変更されていても、各コミットで行われた変更を確認したい場合は、次のオプション-pを使用できgit logます。

git log -p --follow [file/with/path]
于 2013-01-10T05:07:33.083 に答える
4

さまざまな git log オプションと awk を使用してファイル名を正確にする単純な関数 (および gitk が必要とする "--" が含まれています):

# bash
gitk_follow () {
  while (( "$#" )); do
    git log --pretty="" --name-status --follow $1;
    shift;
  done | awk '{print $NF}' | sort -u
}

# used as:
gitk -- $(gitk_follow some_file)
于 2016-05-22T14:18:37.387 に答える