Рабочий процесс GIT Branch - PullRequest
       6

Рабочий процесс GIT Branch

2 голосов
/ 25 февраля 2012

Работа в большом групповом проекте это наш рабочий процесс:

 // create branch
 git checkout -b mybranch
 (do work)
 // commit to branch locally
 git commit -a
 // push to remote
 git push origin mybranch
 (repeat)

Когда мы закончим с работой в нашей ветке, мы объединяем ветку в master:

 // go to master
 git checkout master     
 // update
 git pull master
 // merge our branch into master
 git merge mybranch
 (solve conflicts)
 git push

Теперь мы простоПовторите вышеуказанные шаги, и рабочий процесс прошел в течение нескольких дней.Теперь внезапно все получают непереходные обновления на ветвях других участников группы и мастере.Например, кто-то потянул внутрь мастера, затем слился, но он не может нажать.Это говорит, что не ускоренная перемотка вперед.Это очень странно, так как говорит, что мастер полностью в курсе.

Ниже приведено следующее после git pull, git merge mybranch, git push:

  ! [rejected]        master -> master (non-fast-forward)
  error: failed to push some refs to 'git@github.com:foo/project.git'
  To prevent you from losing history, non-fast-forward updates were rejected
  Merge the remote changes (e.g. 'git pull') before pushing again.  See the
  'Note about fast-forwards' section of 'git push --help' for details.

Тем не менее, git pull говорит, что мы в курсе.

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

Спасибо!

1 Ответ

3 голосов
/ 25 февраля 2012

Не было проблем с вашим предыдущим рабочим процессом.

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

Проблема здесь, вероятно, в том, что кто-то переписал историю в своей локальной копии; если это произойдет, вы будете «в курсе» - как, например, ваша рабочая копия идентична удаленному концу - но вы не сможете нажать.

Если вы делаете свежий клон репозитория, и оттуда делаете merge и push, это, вероятно, будет успешным.

...