マージ コミットはexample.txt、BProject/master名前が に変更されたものとして表示されdir-B/example.txtます。オプションが使用されgit logていない限り、名前変更後のファイル/ディレクトリの履歴をたどりません:--follow
--follow
Continue listing the history of a file beyond renames (works only for a single file).
差分を正しく表示することがどうしても必要な場合はBproject/master、プロジェクトが常にディレクトリdir-Bにあったかのように履歴を書き直してから、通常のマージを行うことができます。これは、マージされた履歴の SHA が 上のものとは関係がないことを意味しBproject/masterます。ただし、タイムスタンプ、作成者、およびコミット メッセージはすべて元の値を保持します。
これを行いたい場合は、Bproject最初に個別にクローンを作成してから、そのクローンでこれを実行することをお勧めします。
git-filter-branch manpage
To move the whole tree into a subdirectory, or remove it from there:
git filter-branch --index-filter \
'git ls-files -s | sed "s-\t\"*-&newsubdir/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
新しい履歴が正しいように見えることを確認したら、書き換えたバージョンをリモートとしてメイン プロジェクトに追加し、通常のマージを使用してマージできます。