Inkognitoss
@Inkognitoss
Full-stack разработчик.

Почему при git pull всегда создается merge commit, даже если правок между pull A и pull B не было?

Не могу решить дилемму.

Обычно такой проблемы нет, но вот на двух серверах при pull-е git требует ввести commit message, при этом если сравнить commit прилетевшим с удаленного репозитория с этим новым commit, то отличий между ними нет.

По итогу при каждом пуле локальная ветка начинает обгонять удаленную на единицу.

Возможно что-то с конфигурацией git?
Пробовал играться с `core.autocrlf` и `core.filemode` не помогло
color.ui=true
core.autocrlf=false
core.filemode=false
merge.ff=no
user.name=***
user.email=***
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.autocrlf=false
remote.origin.url=git@***.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master


Мне бы очень хотелось объяснений такого поведения, а не исправления последствий.
Спасибо большое за советы в духе git reset или git pull -ff, но это не совсем ответы на вопрос.
  • Вопрос задан
  • 456 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
если сравнить commit прилетевшим с удаленного репозитория с этим новым commit, то отличий между ними нет.

Ты наверно хотел сказать, если сравнить дерево, а не коммит.
Чтобы слить две ветки всегда требуется мёрж, когда одна из них не прямой потомок другой. И это не зависит от того, одинаковы ли деревья. Т.е. чтобы слить такие ветки мёрж не нужен:
o--A
   `--B

o--A--B--M1--E
    \   /     \
     -C----D---M2--F


А чтобы слить такие -- нужен
o--A--B
   `--B

хотя состояние обеих веток идентичное.

Смотри, что получается в твоём случае, если я правильно понял:
o--A--M1
     /
...-B----C

Ни одна ветка не является потомком другой: С растёт из B, а не из M1, M1 растёт из B а не из C. Поэтому в будущем опять потребуется мёрж при объединении в любую сторону.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы