私は枝を持っていfeature1
ますmaster
。
次にfeature1
、ファイルの名前dir/file.txt
をdir2/file2.txt
.
その後、ファイルを変更しmaster
、1 週間後にファイルfeature1
も変更しました。
プロジェクト全体でそのように変更された40個のファイルがあります。
にマージしようとするとmaster
、feature1
名前変更のしきい値が低くなります。ほとんどのファイルは正しく自動マージされます。一部のファイルは、手動で競合を解決するために提供されています。
ただし、一部の具体的なファイルは、merge
応答に自動マージされていないか、
適切にマージされていません。1.名前の変更を検出せず、別のブランチ
に追加するだけです。
2. 名前の変更を検出し、競合を手動で解決するように提案します。dir/file.txt
feature1
で見ると多くの変化があります
git difftool master:dir/file.txt feature1:dir2/file2.txt
したがって、git は名前の変更を認識し、何が起こっているのかを通知せずにバージョンを保持することを決定したと思います。どうすれば解決/デバッグできますか?
これは私が使用するコマンドです
git config merge.renameLimit 9999999999
git merge --no-ff -Xrename-threshold=20 -Xignore-space-change master
アップ1
ブランチで作業しているfeature1
ときに、 を削除しdir/file.txt
ました。
おそらく、git はこのファイルを削除する必要があると想定しているため、master
.
ファイルの類似性は保たれますが、名前変更の検出は失敗します (レーベンシュタイン距離はコンテンツの長さの 2% 未満です) 。
別の議論では、ブランチからブランチにファイルをコピーする「手動マージ」が提案されています。
Upd2
他のいくつかのファイルは正しく解決され
CONFLICT (rename/delete): images/ab.gif deleted in master and renamed in HEAD. Version HEAD of cdn/img/ab.gif left in tree.
ます で削除されmaster
、マージされたファイルは正しく解決feature1
されます。削除 (または移動) されたファイルはfeature1
、マージ時に認識されません。
推測?
Upd3
現時点では、逆にマージしようとしています。マージfeature1
してmaster
、どのファイルが追加および削除されているかを確認します。このようにして、git が名前変更として認識できず、手動マージに頼ることができないファイルのリストを作成します。