私は2つの異なるブランチを持っています。新しいブランチでは、ディレクトリ構造が完全に変更されています。gitのあるブランチから別のブランチの別のディレクトリにディレクトリを関連付ける
それはのようなものです:
Old branch:
project/
manager/
widgets/
components/
workers/
New branch:
factory/
widgets/
components/
workers/
Gitはいくつかを認識しますが、ディレクトリの変更のすべてではない、私は新しい枝に古いブランチでの変更をマージするときに、それは彼らがなされるべきであることを認識し、新しいブランチの対応するディレクトリ。
たとえば、古いブランチのバグ修正をproject/manager/widgets/utils.py
にすると、factory/widgets/utils.py
に更新されます。
しかし、何らかの理由で対応するディレクトリの一部がに関連付けられていませんでした。だから、私がマージすると、として削除されたファイルが多く、新しいブランチにが削除されています。
CONFLICT(削除/変更):プロジェクト/マネージャー/労働/ base.py HEADに削除し、古い枝に変更だから、例えば私は
project/manager/workers/base.py
マージレポートに古い枝の改善を行った場合。プロジェクト/ manager/workers/base.pyのold-branchをツリーに残しました。
私はそのフォルダをgitに示すことができる方法があるかどうか疑問に思っています。project/manager/workers/
はfactory/workers
と同じです。
Gitはリコrd "フォルダ"(ディレクトリ)を作成します。代わりに、gitは 'git diff'で独自の特別な動的検出、コンピューティング*ファイルアイデンティティ*(' a/b/c/base.py'を 'd/e/f/base.py'とマッチさせるべきかどうか)時間。 Gitは時には何らかの支援を使うことができますが、現在利用可能ではありません。私の答えはこちらを見てください:http://stackoverflow.com/a/40352403/1256452 – torek
この時点で、実際に何もすることはないと思いますか? –
あなたは '-M'設定に戸惑うことができます(低い値を指定すると、ファイルをマッチさせるのがより楽しくなります;極端に低く設定されていると、Gitは完全に無関係なファイルとマッチします:-))、そして/ -B'設定(Gitが 'a/b/foo.py'と' a/b/foo.py'を間違ってマッチさせている場合)です。それ以外にも、 'git-imerge'を試すことができます。これは、インクリメンタルマージを行うことで、より密接に関連するバージョンで動作し、より簡単にマッチすることができます:http://softwareswirl.blogspot.com/2013/05 /git-incremental-merge.html – torek