Как работать с ветками в Git? - PullRequest
0 голосов
/ 15 октября 2011

Я знаю, что это основной вопрос.

Завершая выпуск, я запускаю главную ветку в производство.

Затем я работаю над веткой разработки, чтобы добавить новые функции.

Теперь вопросы:

Q1: Когда я перемещаю ветку разработки в стадию (на героку), используя git push app-name-staging development:master, я получаю следующую ошибку.Зачем?Как это исправить?

! [rejected] development -> master (non-fast-forward)

error: failed to push some refs to 'git@heroku.com:app-name-staging.git'

Q2: Во время работы над веткой разработки кто-то находит ошибку.Я переключаюсь на главную ветку и исправляю ошибку.Как правильно объединить исправление, сделанное в основной ветке , с веткой dev без изменения основной ветви?

Спасибо.

1 Ответ

3 голосов
/ 15 октября 2011

В обратном порядке, потому что 2 проще:

git checkout dev
git merge master

Вот и все. Это не меняет хозяина вообще. Он просто объединяет все изменения, сделанные на master, с вашей веткой dev.

С другой стороны, ошибка не-быстрой пересылки говорит вам, что в ветви, которую вы нажимаете, есть коммиты, которые будут перезаписаны, если ваш толчок будет успешным. Как правило, это происходит, когда два человека работают в одной отрасли. Предположим, что у нас обоих есть коммит А, и мы оба начинаем работать над ним в одной ветке Вы создаете коммит B1, а я создаю B2. Оба имеют А в качестве родителя. Скажем, вы нажимаете первым, так что теперь в удаленной ветви есть A --- B1. Локально у меня А --- В2. Если бы я нажал на свою ветку, то A --- B2 - это то, что было бы на удаленном компьютере, поэтому ваш коммит был бы потерян. Вот где я получу ошибку без ускоренной перемотки вперед. Правильный способ решения этой проблемы - сначала получить изменения, внесенные кем-то другим, а затем подтолкнуть результат. В примере, если бы я вытащил, я бы в итоге:

   C
  /  \
B1    B2
  \  /
   A

В частности, git сначала захватывает ваш B1, который является потомком A и родным братом B2, затем он объединяет B1 и B2, чтобы сформировать C. Теперь я могу нажать C обратно на удаленный компьютер, не потеряв ни одной истории, потому что ваш B1 там правильно представлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...