
Допустим, у меня есть файл filename
в репозитории git в поддиректории dir1
с историей примерно следующего вида:
v7 --- v8 --- v9 --- v10
Файл является частью более крупного репозитория с различными подкаталогами, но только указанные выше наборы изменений влияют на этот файл. Теперь я откопал старую версию этого файла ( filename
тоже), которая по ошибке была зафиксирована в другом подкаталоге dir2
. Эта старая версия "существует" только в одном наборе изменений, скажем:
v4
Проблема теперь в том, могу ли я переписать историю этих (в git) двух файлов так, чтобы она выглядела так, как будто filename
существовала только в , dir1
в результате чего история будет выглядеть примерно так:
v4 --- v7 --- v8 --- v9 --- v10
Думаю, я мог бы попробовать удалить файл в dir2
и зафиксировать его как новую версию файла в dir1
, но это испортит фактическую историю файла, так что на самом деле самая старая версия файла будет отображаться как самая новая.
У меня очень мало опыта в "настройке" истории репозиториев git, поэтому я не знаю, как это сделать, но предполагаю, что rebase может быть ответом? Я единственный, кто работает с репозиторием, поэтому моей единственной заботой будет синхронизация этих изменений на двух компьютерах.
Думаю, на самом деле я хочу просто оставить файл там, dir2
где он изначально находится в истории, но хочу изменить коммит, вызванный v4
выше, чтобы сделать файл версией файла в формате dir1
.