2015-12-04 2 views
1

У меня здесь довольно сложная ситуация.git merge branch и незафиксированные изменения на мастер

Двое сотрудников работали над проектом с использованием git.
Оба клонировали оригинал мастера.

  • Сотрудник 1 создал филиал для разработки небольшой функции.
  • Сотрудник 2 внес серьезные изменения, не совершая их или не создавая ветку.

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

Каков наилучший способ для продолжения?

ответ

2

Сотруднику 2 необходимо совершить или скрыть его изменения, прежде чем он сможет объединить изменения с другими. Они могут выполнить следующие шаги, чтобы объединить:

Сотрудник 1 сливает свои изменения обратно master, чтобы избежать ненужного слияния коммит, он может первый rebase его особенность ветвь на master:

  1. мерзавец контроль employee_1_feature_branch; # Не нужно, если уже в этой отрасли
  2. мерзавец перебазироваться хозяином
  3. мастер мерзавца фотографии
  4. мерзавца сливаться employee_1_feature_branch
  5. мерзавца нажимных мастеров происхождения

Сотрудник 2 совершает свои изменения, и слияние изменений Employee 1:

  1. git add.
  2. git commit -m 'изменяется от сотрудника 2'
  3. git pull --rebase origin master; # Может потребоваться вручную разрешить конфликты после этого
  4. мерзавца мастера толчок происхождения

Или если работник 2 не хочет, чтобы сделать коммит до слияния (т.е. объединить первый и затем совершить), он может сделать следующее:

  1. git add.
  2. мерзавец тайник
  3. мерзавец тянуть --rebase происхождения мастер
  4. мерзавец копить поп; # может понадобиться вручную разрешать конфликты после этого
  5. ... редактировать то, что нужно редактировать ...
  6. git add.
  7. мерзавец совершить -m «изменяется от Работника 2»
  8. мерзавца мастера толчок происхождения

Вот так.

+0

Выглядит отлично, но необходимо ли для Employee 1 перебалансироваться? Я спрашиваю, потому что он, возможно, уже подтолкнул его изменения. – Phll

+0

Если он уже подтолкнул, то есть его коммиты были последними изменениями в репо, и не было конфликтов или он разрешил конфликты, так что все в порядке. – neevek

0

Сначала интегрируйте небольшую функцию.

Затем попросите вашего второго сотрудника

  • создать ветку,
  • надстройку и совершить его/ее развитие в этой отрасли
  • выборки от верхнего репо
  • перебазироваться эту ветвь на вершине происхождение/ведущий:

    git rebase origin/master 
    

Это будет воспроизводить эти коммиты поверх обновленного master (который теперь включает небольшую функцию).
Работа для решения любого конфликта будет выполняться на Рабочем месте 2.
Как только это будет сделано, достаточно просто нажать git push, чтобы нажать обновленную ветку, и можно сделать тривиальное слияние, чтобы интегрировать его в master.