Skip to content

Instantly share code, notes, and snippets.

@nezed
Last active November 19, 2017 10:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nezed/835518407547a6462e0a to your computer and use it in GitHub Desktop.
Save nezed/835518407547a6462e0a to your computer and use it in GitHub Desktop.

В локальной директории своего репозитория нужно добавить как дополнительный ремоут основной репозиторий, куда ты отправляешь задания на проверку

$ git remote add upstream <тут https ссылка на основной репозиторий>

пример ссылки на основной репозиторий: https://github.com/organization-name/project.git

Так, в проекте будет 2 ремоута:

Теперь, нужно получить изменения из основного репозитория (upstream), где были приняты задания

$ git checkout master
$ git pull upstream master

Изменения получены, теперь наша задача сделать так, будто работа в ветке фичи (назовем ее, предположим feature-N) была сделана после появления новых коммитов в master

Для этого:

$ git checkout feature-N
$ git rebase master

Если окажется, что новые изменения в master относятся к тем-же строчкам кода, что и изменения в ветке feature-N - возникнет конфликт. В этом случае в консоли будет:

CONFLICT (content): Merge conflict in <имя файла>
Failed to merge in the changes.
…
When you have resolved this problem, run "git rebase --continue".

Если конфликта не возникло - перейти к последнему шагу "Готово"

Чтобы разрешить конфликт:

  1. Открой файл с конфликтом в тектовом редакторе В файле появятся знаки >>>>>>, ====== и <<<<<, между ними будут два конфликтующих участка кода.

  2. Из двух участков кода, нужно выбрать только один, актуальный, и удалить строки в которых были множественные >, =, < т.е. привести изменения в файле к такому виду

  3. Сохраняем файл, говорим что конфликт решен

$ git add <имя файла>
  1. Заканчиваем rebase
$ git rebase --continue

Если конфликты возникли во множестве файлов, увидеть их все можно с помощью git status

Подробнее о разрешении конфликтов

Готово!

Но, история изменений в ветке feature-N изменилась, а чтобы изменить историю в этой ветке на github, нужно сделать форсированный пуш

не забывай: origin - твой репозиторий, upstream - основной, где выполняются проверки

$ git push origin +feature-N
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment