Как я могу объединить ветку в мастер, но продолжить работу над ветвью?
Я создал ветку, чтобы попробовать другой подход, и это сработало, поэтому я хотел бы объединить ветку "Farmcrops" в "Мастер", чтобы сохранить эти изменения, но продолжить ветвь "Farmcrops", чтобы изучить другую возможность. Таким образом, если это последнее изменение не сработает, я могу вернуться к "Мастер", который теперь будет включать первый раунд изменений.
Как я могу это сделать?
Ответы
Ответ 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