Как я могу объединить код в zip-файле из старой версии репозитория с последней версией? - PullRequest
3 голосов
/ 18 апреля 2020

Я довольно плохо знаком с git и знаю только основы. Я пытался найти информацию по этому вопросу, но, возможно, я просто не в состоянии выразить то, что мне нужно сделать, в терминах поиска.

Моя компания наняла стороннего разработчика, который взял код из известного репозитория и внесены изменения. К сожалению, они не документировали свои изменения с комментариями. Нам дали zip-файл, с приблизительным предположением о том, из какой версии изначально был клонирован код. Однако нам необходимо сохранить их изменения и обновить их до последней версии в репозитории live. Как лучше всего справиться с этим с git? Zip-файл содержит только файлы из репозитория, без git истории версий.

Может кто-нибудь предложить совет, как обеспечить использование нами последнего кода без потери их изменений?

Ответы [ 3 ]

3 голосов
/ 18 апреля 2020

Я не думаю, что другие ответы действительно решают проблему из root: найдите ревизию, с которой началась разработка почтового индекса. Создайте ветку в этой ревизии и проверьте ее. Затем удалите все из рабочего дерева (не связывайтесь с каталогом. git, на всякий случай), замените содержимое на zip, git добавьте все и создайте новую ревизию .... что-то вроде git commit -m "the zip" , Теперь вы можете go перейти к любой ветви и объединить созданную вами ветку для этого ..... или перебазировать ее, как вам нужно.

2 голосов
/ 18 апреля 2020

Это вполне возможно сделать.

Вы можете создать ветку на основе того места, где, по вашему мнению, начался код (назовите его import). Вы можете распаковать содержимое в рабочее дерево, перезаписать все файлы и зафиксировать. Теперь вы можете увидеть разницу между оригиналом и изменениями, используя git diff HEAD^.

. Если вы хотите объединить эти изменения, вы можете переключиться на master, запустить git merge import и разрешить любые конфликты.

Если вы считаете, что допустили ошибку относительно того, на чем он основан, вы можете создать временную ветку с текущим содержимым (git branch temp import), проверить import, переназначить его на новый коммит (git rebase --onto NEW import^), а затем сбросьте ветвь до исходного значения (git reset --hard temp). Это обеспечивает быстрый и простой способ найти правильного родителя, чтобы ваше слияние дало наилучший возможный результат.

В общем, вы действительно хотите попытаться найти как можно более точно, какой коммит был основан на оригинале. потому что способ слияния заключается в том, что он включает изменения, произошедшие в обеих ветвях. Знание того, какие изменения это, конечно, зависит от нахождения базы слияния, которая в этом случае является последним общим коммитом master и import общего (точка разветвления).

1 голос
/ 18 апреля 2020

Да, конечно. На самом деле это легче сказать, чем сделать, но как только вы выполните эти шаги, вы гарантированно добьетесь успеха. Вам не понравится процесс, но вам понравится результат.

  • создайте резервную копию папки вашего проекта, чтобы убедиться, что вы не потеряете неверсированный контент
  • проверьте последнюю версию, которая у вас есть
  • создать ветку с именем big-merge
  • оформить заказ big-merge
  • git pu sh -u origin big-merge
  • распакуйте работу другого разработчика
  • скопируйте разархивированный контент в папку вашего проекта
  • git commit
  • git show
  • не беспокойтесь Это только комментарий в ветке, который вы даже не заметили sh
  • сейчас, пока вы проверяете, что git показывает вам, убедитесь, что вы пьете кофе и чай. И вам понадобится резиновая утка
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...