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

Ведение ветки в актуальном состоянии с помощью мастера

У меня есть удаленный репозиторий, из которого я вытащил и из него вышло. Я хочу обновить новую ветвь с изменениями, сделанными для мастера. Я думаю о рабочем процессе ниже, это имеет смысл или есть ли лучшие способы сделать это?

  • Начальное разветвление и проверка:

    git checkout master
    
    git pull
    
    git checkout -b my_branch
    
  • Сделайте несколько работ в my_branch, а затем периодически:

    git checkout master
    
    git pull
    
    git checkout my_branch
    
    git merge master --no-ff
    

Повторите шаг 2, если необходимо, с периодическим нажатием на удаленный my_branch.

Затем, когда вы готовы к слиянию обратно:

git checkout master

git merge my_branch --no-ff

Звук нормально?

4b9b3361

Ответ 1

Вы можете упростить свои команды:

1.

git fetch
git checkout -b my_branch origin/master

2.

git fetch
git merge origin/master

git fetch обновляет удаленные ветки, обычно нет необходимости иметь локальную копию ветки, если вы не планируете работать с этой веткой.

Вы можете опустить --no-ff после настройки git config --global merge.ff false.

git help config говорит:

   merge.ff
       By default, Git does not create an extra merge commit when merging
       a commit that is a descendant of the current commit. Instead, the
       tip of the current branch is fast-forwarded. When set to false,
       this variable tells Git to create an extra merge commit in such a
       case (equivalent to giving the --no-ff option from the command
       line). When set to only, only such fast-forward merges are allowed
       (equivalent to giving the --ff-only option from the command line).

Помните, что git pull представляет собой комбинацию git fetch и git merge.

Обычно вы просто хотите git pull --rebase, который по существу git fetch plus git rebase, и создает намного более чистую историю.

Есть ли причина для ваших "периодических толчков"? Если никто другой не работает над одной и той же веткой, это было бы прекрасно, просто нажать после завершения всего.

Ответ 2

Я бы посоветовал использовать рабочий процесс rebase. Поэтому вместо git pull вы должны использовать git pull --rebase.

Я бы сделал то же самое с ветвью функций. Поэтому вместо git merge master --no-ff я использовал бы git rebase master. Однако, если ветвь функции предназначена для совместного использования сотрудниками во время разработки, тогда вам будет лучше слить ведущую ветвь периодически в ветвь функции.

Но, честно говоря, я работаю в небольшой команде, и если нам нужно работать вместе с филиалом функции, и нам нужно обновить его с помощью мастера, мы просто приостановим нашу работу на короткое время (и сообщим процесс четко), rebase на master и force нажимают на ветвь функции. Но, конечно, это не масштаб для больших команд. Тем не менее, мне гораздо удобнее работать с ветвью функций, которая сворачивается на master вместо того, чтобы иметь дело с слияниями с мастером.

Обязательно прочтите это.

Git проблемы с рабочим процессом и rebase vs merge