1. ホーム
  2. git

[解決済み] Gitによるファイルコピー操作の記録

2022-04-26 04:22:39

質問

git-mvでファイルを移動すると、ステータスにファイル名が変更されたと表示され、一部を変更してもほぼ同じものとみなされます(履歴を追えるので良いことです)。

ファイルをコピーするとき、元のファイルには新しいコピーと関連づけたい履歴があります。

ファイルを移動してから元の場所に再チェックアウトしようとしましたが、一度移動すると、gitは元の場所をチェックアウトさせてくれません。

ファイルシステムをコピーしてからファイルを追加しようとしたのですが、git はそれを新しいファイルとしてリストアップします。

ファイルのリネームや移動を記録するのと同じように、gitにファイルのコピー操作を記録させ、その履歴を元のファイルに遡らせる方法はないのでしょうか?

解決方法は?

Git はリネーム・トラッキングもコピー・トラッキングも行いません。 記録 は、リネームやコピーを行います。代わりに行うのは、リネームとコピー 検出 . でリネーム検出を要求できます。 git diff (そして git show を使用することで -M オプションを使用すると、変更されたファイルでの追加のコピー検出を要求することができます。 -C オプションで、すべてのファイルに対してより高価なコピー検出を要求することができます。 -C -C . を参照してください。 git-diff(ギットディフ の man ページを参照してください。

-C -C を意味します。 -C であり、かつ -C を意味します。 -M .

-M のショートカットです。 --find-renames , -C というのは --find-copies-C -C は、次のように表記することもできます。 --find-copies-harder .

を設定することで、常にリネーム検出を行うように設定することもできます。 diff.renames をブール値の真偽で指定します (例. true または 1 に設定することで、コピー検出を行うよう git に要求することができます。 copy または copies . を参照してください。 ギットコンフィグ の man ページを参照してください。

また -l オプションで git diff と関連するコンフィグ変数 diff.renameLimit .


注意事項 git log <pathspec> は、Git では異なる動作をします。 <pathspec> はパスの区切り文字のセットで、パスには(サブ)ディレクトリ名を指定することができます。 これは履歴をフィルタリングし、簡略化します。 以前 リネームとコピーの検出が活躍します。 リネームやコピーを追いかけたい場合は git log --follow <filename> (現在は少し制限されており、1つのファイルに対してのみ機能します)。