#git #mv
#git #mv
Вопрос:
У меня есть репозиторий A
, который использует подмодуль B
. В репозитории A
файл file.filetype
является отслеживаемым объектом. Я хочу переместить этот файл в B
. Я не обязательно хочу сохранять историю, но я хочу, чтобы любому пользователю было ясно B
, что файл был не просто создан заново, а скорее перемещен A
(например, путем предоставления URL A
-адреса и редакции, в которой файл был удален). Аналогично A
, я хочу, чтобы было ясно, что произошло: при этой ревизии файл был перемещен туда B
, где его можно было найти, начиная с некоторой ревизии.
Я попробовал git mv
, и, похоже, это сработало, но теперь A
git status
также сообщает мне, что B
это было удалено, и что некоторые (если не все) файлы B
считаются «неотслеживаемыми файлами», что не только странно, но и вызывает беспокойство. B
Однако внутри все более или менее нормально — он отмечает появление нового и, следовательно, неотслеживаемого файла. К сожалению, он не знает, откуда это взялось, но он это видел.
Есть предложения?
Комментарии:
1. Причина, по которой вы не можете использовать
git mv
для этого, заключается в том, что подмодуль является отдельным репозиторием Git . Чтоgit mv
нужно, так это организовать многоступенчатое добавление и удаление изменений в одном репозитории, но здесь вам нужно повлиять на два разных репозитория. (Это почти наверняка ошибка, котораяgit mv
пыталась это сделать и привела к беспорядку.)
Ответ №1:
Отмените git mv
( git reset HEAD
) и выполните действия вручную :
- переместите файл на вашем диске из
A
в сB
помощьюmv
- из подмодуля
B
: добавить файл и зафиксировать, с сообщением, в котором упоминается нужная информация: «файл, импортированный из репозитория A (commitid-in-A)» - репозиторий fome
A
: зафиксируйте как удаление файла, так и новое состояние подмодуляB
с сообщением о фиксации, в котором упоминается нужная вам информация: «файл перемещен в B (commit-id-in-B)»