
次のような履歴を持つファイルがfilename
サブディレクトリの Git リポジトリにあるとします。dir1
v7 --- v8 --- v9 --- v10
このファイルは、さまざまなサブディレクトリを持つ大きなリポジトリの一部ですが、上記の変更セットのみがこのファイルに影響します。今、私はそのファイルの古いバージョン (filename
も) を掘り起こしましたが、これは誤って別のサブディレクトリにコミットされていましたdir2
。この古いバージョンは、1 つの変更セットにのみ「存在」します。たとえば、次のようになります。
v4
ここで問題となるのは、これら 2 つのファイルの履歴を (git に) 書き換えて、次のような履歴filename
だけが存在するように表示できるかどうかです。dir1
v4 --- v7 --- v8 --- v9 --- v10
のファイルを削除してdir2
、 のファイルの新しいバージョンとしてコミットすることもできると思いますdir1
が、そうするとファイルの実際の履歴が台無しになり、実際にはファイルの最も古いバージョンが最新のものとして表示されてしまいます。
Git リポジトリの履歴を「微調整」する経験がほとんどないので、その方法がわかりませんが、リベースが答えになるのではないかと思います。リポジトリで作業しているのは私だけなので、唯一の懸念は、これらの変更を 2 台のコンピューター間で同期することです。
私がやりたいことは、実際にはファイルをdir2
履歴内の元の場所にそのまま残すことだと思いますが、v4
上記のコミットを変更して、ファイルを 内のファイルのバージョンにしたいのですdir1
。