14

特定のプロジェクトの一連のスナップショットを git の履歴に入れようとしています。これを行うには、各スナップショットの内容をリポジトリ ディレクトリに入力してから実行します。

git add -A .
git commit -m 'Version X'

これは、この回答で推奨される方法です。ただし、ファイルの内容が 100% 変わらない場合にのみ、コミットがファイルの名前変更を認識するようです。git commitファイルの内容が少し変更された名前の変更を検出するために、名前の変更の検出に影響を与える方法はありますか? git merge名前変更のしきい値を制御するためのさまざまなオプションがありますgit diffが、これらのオプションは にはありませんgit commit

私が試したこと:

  • 自作スクリプトを使用して名前が変更されたファイルを見つけ、元のファイルの名前を新しい場所に変更してコミットを実行してから、新しいファイルの内容をコミットします。ただし、これは人為的なコミットを導入し、git の名前変更検出機能を使用しないため、洗練されていないように見えます。
  • スナップショットごとに個別のブランチを作成し、連続するブランチをmaster使用してマージします

    git merge -s recursive -Xtheirs -Xpatience -Xrename-threshold=20

    ただし、これにより、古いバージョンの名前が変更されたファイルが配置されたままになり、名前の変更も検出できませんでした。

4

2 に答える 2

14

git commit名前の変更を検出することはありません。コンテンツをリポジトリに書き込むだけです。名前の変更(およびコピーも)は、事後にのみ検出されます。つまり、実行git diff中、git mergeおよび友人です。これgitは、名前変更/コピー情報を保存しないためです。

于 2013-02-12T12:53:25.210 に答える
14

コメントと別の回答で示されているように、コミットで名前変更検出のしきい値を調整することは意味がありません。これは、実際にコミットに保存されているものではなく、コマンドの出力のみを変更するためです。

ただし、できることgit logは、コマンドで名前変更検出のしきい値を調整することです。これは、パラメーターを使用して行い--find-renamesます。これは、私が達成したかった結果をほとんど達成します。

于 2013-02-12T13:34:20.460 に答える