2

git を使用して dev ディレクトリに次のような状況があります。

/mobile.html
/sub-folder/mobile.html

これは、両方の場所でコミットされた同じファイルです。最初にルートで mobile.html に取り組み、それを /sub-folder に移動しましたが、そのコミットは続きませんでした。私はそれに取り組み続け、新しいコミットを行いました。

だから今私は基本的に持っています:

  • /mobile.html -コミットa、コミットb
  • /sub-folder/mobile.html- コミット c、コミット d

これら2つのファイルのコミット履歴を結合する方法はありますか?

4

2 に答える 2

3

ここに表示されているのは、Git が個々のファイルの履歴を追跡しない (!) という事実を認識していないことだと思います。Git モデルでは、コンテンツのみが追跡され、特定のリポジトリ スナップショット (コミットが表すもの) に存在するすべてのファイルにわたるその分布は無関係です。したがって、名前の変更は特定の方法で追跡されるわけではなく、git mvコマンドは の便利なヘルパーにすぎませんgit rm --cached <filename> && mv <filename> <othername> && git add <othername>

ファイルの変更履歴の認識された不連続性を補うために、Git には履歴トラバーサル コマンドに特別なつまみがあり、これを使用して、人間がファイルの名前変更として認識するものを検出するのにどれだけ苦労するかを Git に伝えることができます。特に、コマンドの--follow--find-renamesおよび--find-copiesコマンドライン オプションを見てくださいgit log

于 2013-05-05T08:04:51.420 に答える
0

ファイルを移動し、変更せずにコミットした場合、git はこれが移動であり、削除 + 新しいファイルではないことを認識できます。

于 2013-07-19T12:08:53.467 に答える