3

Git は名前の変更を追跡しません

ファイルがありましたdir1/some.class。私はそれをとしてコピーしdir2/some.class、コミット+プッシュしました。数週間後、私はそのdir1バージョンを削除しました。

新しいファイルではなく、移動であるかのように動作するように git を教えることはできますか? したがって、他のブランチからマージする
すべての変更は、実際には? dir1/some.classdir2/some.class

で試しました

git checkout mybranch
git config merge.renameLimit 100
git merge --no-ff -X rename-threshold=80 master
git config --unset merge.renameLimit

一部のファイルがマージされました。しかし、そうでない人もいます。特に私が欠けているのはdir2/class、過去に発生した変更を として確認するための git log 機能ですdir1/classが、それは起こりません。

ここに画像の説明を入力

実際に私を助けたのは

名前変更のしきい値が低い (ファイルの名前が変更されたと見なすには 10% の類似性)
大きな merge.renameLimit (マージ中に大量の RAM を消費する)

 git checkout mybranch
 git config merge.renameLimit 999999
 git merge --no-ff -X rename-threshold=10 -Xignore-space-change master
 git config --unset merge.renameLimit

また、以下にマークされた回答も確認してください。

4

1 に答える 1

2

私はこれを試してみます:あなたがマージしているブランチで、名前を変更dir1dir2ます(必要に応じて、新しい一時的なブランチでこれを行うことができます)。次に、それをメイン ブランチにマージします。

于 2012-10-21T14:57:34.347 に答える