Почему git просит ввести сообщение фиксации, чтобы объяснить, почему это слияние необходимо

У меня была 1 фиксация в моей локальной ветке, затем, чтобы перенести изменения из удаленной ветки в мою локальную, я сделал git pull в своей локальной ветке и, к моему удивлению, git сказал это.

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.

Я так понимаю, что нахожусь в vi редакторе.

У меня вопрос: почему git попросил меня ввести сообщение. Я никогда раньше с этим не сталкивался.

Моя версия git: version 1.9.5-preview20141217

Я сослался на это вопрос, но мне все еще трудно понять. Спасибо.


person ScrapCode    schedule 05.04.2016    source источник
comment
какую версию GIT вы используете?   -  person dubes    schedule 05.04.2016
comment
версия 1.9.5-preview20141217   -  person ScrapCode    schedule 05.04.2016
comment
Обновил свой ответ с объяснением, почему Git это сделал. Сообщите мне, что вы думаете или мои предположения неверны.   -  person dubes    schedule 05.04.2016


Ответы (1)


Из документации Git:

Включает изменения из удаленного репозитория в текущую ветку. В режиме по умолчанию git pull является сокращением для git fetch, за которым следует git merge FETCH_HEAD.

На ваш вопрос: ПОЧЕМУ?

  1. Почему Git создает фиксацию MERGE: это поведение по умолчанию для git pull. В Интернете есть множество объяснений такого поведения: это хорошо объясняет это.
  2. Why is Git asking for a commit message now: Three possible options come to my mind:
    • You updated your git client
    • У вас никогда не было локального филиала, который раньше был бы впереди удаленного
    • Ваша конфигурация git была недавно изменена

Как этого избежать:

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

git rebase or git pull --rebase

Если это действительно то поведение, которое вы ищете, вы можете настроить свою конфигурацию git, чтобы сделать перебазирование параметром по умолчанию для вашего git pull

Настроить глобально с помощью:

git config branch.autosetuprebase always # Force all new branches to automatically use rebase

Или вы можете настроить его для каждой ветки:

git config branch.*branch-name*.rebase true # Force existing branches to use rebase.
person dubes    schedule 05.04.2016