マージ コミットは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
新しい履歴が正しいように見えることを確認したら、書き換えたバージョンをリモートとしてメイン プロジェクトに追加し、通常のマージを使用してマージできます。