Git перемещает файлы по подмодулям

#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)»