Синхронизация истории фиксации мастера и разработки

#git #github

#git #github

Вопрос:

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

В настоящее время я делаю это с помощью: git checkout master git pull origin разработка git push origin master

Это работает для меня и синхронизирует все хорошо, но кажется немного неправильным. В моей команде есть еще один разработчик, который любит просто объединять develop в master, как обычный человек. Однако слияние создает merge git, который заставляет master 1 фиксировать перед разработкой. Они накапливаются со временем и делают историю git нечистой и раздражающей для просмотра. Если я выполняю свой взлом клонирования ветки, эти коммиты слияния исчезают на удаленном компьютере, но остаются в локальной ветке моей команды.

Я пробовал git rebase и git merge —ff, но эти хэши изменений, которые по-прежнему отображаются как неравномерные.

Резюме: Как мне чисто перемотать master, чтобы быть идеально ровным с develop? Или я просто не использую git так, как это должно быть?

Ответ №1:

В целом ваш поток кажется правильным. Но поскольку выполнение только быстрой перемотки вперед является абсолютным требованием, вы должны пройти --ff-only , чтобы обеспечить его соблюдение.

 git checkout master 
git fetch origin
git merge --ff-only origin/develop
git push origin master
  

--ff не требуется, поскольку быстрая перемотка вперед — это поведение по умолчанию.

Я пробовал git rebase и git merge —ff, но эти хэши изменений, которые по-прежнему отображаются как неравномерные.

Быстрое слияние по определению никогда не создает фиксацию слияния, а только обновляет указатель ветки:

—ff Когда слияние разрешается как быстрая перемотка вперед, обновите только указатель ветви, не создавая фиксацию слияния. Это поведение по умолчанию.