#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 Когда слияние разрешается как быстрая перемотка вперед, обновите только указатель ветви, не создавая фиксацию слияния. Это поведение по умолчанию.