2016-03-24 1 views
0

У меня есть проект в репозитории.Sync git repo с изменениями сервера

Программист (не я) изменил развернутый код на сервере напрямую, а не редактировал репозиторий, контролируемый Git (было сделано много изменений).
Итак, теперь у репозитория есть старая версия кода.

Что делать в этом случае?

Должен ли я создать новую пустую ветку, скопируйте код с сервера там, а затем сделайте эту ветку master, как описано here?
Или что-то еще?

+0

содержит ли сервер на работу или голую копию? – Claudio

+2

Какова ваша конечная цель? Вы хотите, чтобы код, который программист изменил в репозитории? или вернуться к версии репозитория? или сохранить изменения, внесенные программистом, но все же вернуться к версии репозитория? – Harmelodic

+0

сервер содержит рабочий код, поэтому я хочу, чтобы код с сервера стал новой версией. – Heidel

ответ

1

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

  • Создайте новую ветку от вашей текущей ветви мастера/развития. Предположим, что ваш сервер является выписка из главного отделения:
    • git checkout -b prod-edits origin/master
  • Зафиксируйте производства изменений в этой отрасли так же, как типичные изменения кода.
    • git add -A
    • git commit -m "Production edits"
    • git push origin prod-edits
  • Тогда я бы пройти через все, что рабочий процесс вы обычно делаете для художественных отраслей, например слияние в тестовую ветвь, QA it, слияние в master.
  • Следующий шаг запускается. Если вы запускаете «вручную», вытаскивая мастер непосредственно на сервер, я удаляю его и загружаю последние. Это разрушительный шаг, который изменит ваш код в процессе производства, поэтому сделайте это в копии каталога и символической ссылки на него после его завершения. Сделайте резервную копию. Что-то вроде
    • cp -r /path/to/code /path/to/current
    • cd /path/to/current
    • git reset --hard && git pull
    • rm -fr /path/to/code && ln -s /path/to/current /path/to/code
+0

Не могли бы вы объяснить мне, какие команды я должен использовать для сохранения всего кода с сервера на новую ветку? 'git add .',' git commit -m "комментарий здесь" ',' git push origin new_branch', правильно? – Heidel

+0

Я добавил команды git, которые я использовал бы для своего ответа. –

+0

Какая команда 'git checkout -b prod-edits origin/master' делает? Я действительно боюсь что-то сломать, потому что у меня есть самый новый код версии только на сервере. – Heidel

 Смежные вопросы

  • Нет связанных вопросов^_^