#git
#git
Вопрос:
У нас есть некоторый устаревший код, который я пытаюсь привести в более современную парадигму. По сути, они взяли код из вышестоящей команды, удалили из него всю информацию о git, скопировали файлы в пустое хранилище и зафиксировали его. Затем затем добавили свой собственный код поверх него.
Теперь мне нужно переместить этот код на новый базовый уровень. (У меня есть другая цель — создать реальные ветви для этого кода в клонах вышестоящего репозитория, но это другое обсуждение.)
Я создал ответвление от основной ветви, когда был добавлен исходный код, скопировал новую базовую линию поверх нее, а затем зафиксировал это. Затем я создал мастер слияния git. Был ли это правильный способ сделать это? Я заметил, что в одном из файлов, казалось, что мне не хватает работы, проделанной над ним с master, и это заставляет меня задуматься, не пропускаю ли я изменения и в других местах.
Вот основная идея того, что я пробовал:
A -- B -- [ Baseline code "C" ] -- D -- E -- F ... HEAD
-- [ New baseline "Z" ] <-- Did a git merge on this branch to bring in the changes on master
В журнале git я вижу коммиты A — F, затем мою базовую «Z», затем коммит слияния от master.
Комментарии:
1. Вы сказали, что они изначально скопировали исходный код в пустое хранилище; но вы определили
C
ad «базовый код»… итак, что такоеA
иB
?2. Куча плохих идей… Они добавили базовый уровень, удалили каталог .repo, вернули базовый уровень. снова добавил базовый код, внес изменения, а затем переместил все в каталог (где файлы должны были быть в первую очередь).
3. Что ж, похоже, что ответом на этот вопрос должно быть no, но это по-прежнему наиболее разумная возможность с точки зрения git: могли ли изменения, которые «отсутствуют», произойти между
A
иC
? Если это так, тоgit
будет ли этоZ
предназначено для отмены этих изменений. Вы могли бы подтвердить или исключить эту возможность с помощьюgit diff A C
. В любом случае, вероятно, «безопаснее» использоватьZ
как дочерний элементA
, а неC
.4. Помимо вышеописанного, процедура, которую вы описали, звучит правильно, по крайней мере, на указанном уровне детализации.
5. Спасибо! Изменения определенно произошли после C. Я проверил это, просмотрев журналы. Я вижу кучу отсутствующих включений и некоторый код в одном из файлов .c, когда я пошел разрешать конфликт «оба изменены». Я беспокоюсь, что если я помещу Z в качестве дочернего элемента A, тогда будут применены коммиты возврата / перемещения между A-C. Поскольку они из двух разных версий (одна намного позже другой), я не уверен точно, что произойдет.