Подтвердить что ты не робот

Как я могу объединить ветку в мастер, но продолжить работу над ветвью?

Я создал ветку, чтобы попробовать другой подход, и это сработало, поэтому я хотел бы объединить ветку "Farmcrops" в "Мастер", чтобы сохранить эти изменения, но продолжить ветвь "Farmcrops", чтобы изучить другую возможность. Таким образом, если это последнее изменение не сработает, я могу вернуться к "Мастер", который теперь будет включать первый раунд изменений.

Как я могу это сделать?

4b9b3361

Ответ 1

Вот процесс, который вы ищете:

  • git checkout master
  • git merge Farmcrops
  • git push origin master
  • git branch -d Farmcrops
  • git checkout master
  • git checkout -b Farmcrops
  • продолжайте свои фиксации на ветке Farmcrops...

Ветки - это просто указатели, очень просто создать/удалить ветку, и если ваша ветка Farmcrops не нажата на удаленный репозиторий, с ней абсолютно никакой зависимости. Вы можете удалить его после слияния и воссоздать его из мастера.

Надеюсь, это поможет вам.

Ответ 2

Если я правильно понял, вы начинаете с

-- o -- o -- o [master]
    \
     o -- o [Farmcrops]

Нельзя объединить Farmcrops непосредственно в master, потому что вы рискуете сломать код в master, который, по соглашению, должен быть более стабильным. Вместо этого проверьте Farmcrops и объедините master в него.

git checkout Farmcrops
git merge master

Затем вы получите

-- o -- o -- o [master]
    \         \
     o -- o -- o [HEAD -> Farmcrops]

Запустите несколько тестов; убедитесь, что все работает так, как ожидалось. Затем проверьте master и объедините Farmcrops в него:

git checkout master
git merge Farmcrops

Ваше репо будет выглядеть следующим образом:

-- o -- o -- o
    \         \
     o -- o -- o [HEAD -> master,Farmcrops]

Теперь проверьте Farmcrops и продолжите эксперимент, сделайте больше коммитов на нем и т.д.

-- o -- o -- o
    \         \
     o -- o -- o [master]
                \
                 o -- o -- o [HEAD -> Farmcrops]

Вы всегда можете отступить на master (который теперь содержит "первый раунд изменений", как вы выразились), если ваш новый эксперимент на Farmcrops не так хорошо работает.

Ответ 3

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

Просто используйте Farmcrops как имя ветки и не удаляйте ветвь после слияния.

GIT -SCM: основное ветвление и слияние

[ШАГ 1] Создайте ветку и внесите изменения

$ git checkout Farmcrops
Switched to a new branch 'Farmcrops'
$ vim index.html
$ git commit -a -m 'fix the broken email address'
[Farmcrops 3a0874c] fix the broken email address
 1 files changed, 1 deletion(-)

[ШАГ 2] Затем вернитесь к мастер-ветке и слейте

$ git checkout master
$ git merge Farmcrops
Updating f42c576..3a0874c
Fast-forward
 README | 1 -
 1 file changed, 1 deletion(-)

И если вы хотите внести дополнительные изменения в одну ветвь, снова примените [шаг 1].

При завершении изменений снова примените [шаг 2].

Выполняйте эти шаги как можно больше.

Как только вы закончите работу с этой веткой, вы можете ее удалить.

$ git branch -d Farmcrops
Deleted branch Farmcrops (was 3a0874c).

NOT: вместо слияния я предлагаю rebase GIT -SCM: Rebase

git rebase Farmcrops