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

Git pull просит меня написать сообщение о слиянии

Я вытащил из мою ветку:

git checkout mybranchSample
git fetch
git pull origin master

Затем Git выдает мне следующее сообщение:

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

enter image description here

И после ввода сообщения коммита, оно сливает master в мои файлы. И хотя я не работал с некоторыми файлами из master, он показывает зеленый список файлов, когда я печатаю git status.

Эта проблема не происходит с моими коллегами, а только со мной. Что может быть причиной этого?

4b9b3361

Ответ 1

git pull - это в основном два действия сразу: git fetch, за которым следует git merge (если вы не используете git pull --rebase, и в этом случае вы можете догадаться, что происходит).

Причина, по которой вы видите это, состоит в том, что Git не может выполнить слияние с быстрой перемоткой вперед, как это может быть в большинстве случаев. Причина этого заключается в том, что вы git commit привязываетесь локально к ветке, которую пытаетесь вытащить, и теперь вам нужно объединить удаленные изменения с вашими локальными.

Также стоит отметить, что Git предварительно заполнено сообщение о слиянии для вас, поэтому вам не нужно ничего вводить. Просто сохраните и выйдите, и слияние должно быть завершено. (Если, конечно, не существует конфликтов слияния).

Ответ 2

Линус Торвальдс объясняет это лучше всего:

Распространение слова о предстоящем изменении интерфейса git ', так как я в значительной степени виноваты.

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

Я использую эту функцию git в течение последних нескольких недель, и это привело к моим слияниям с подпользователями, имеющими различные примечания в их (ну, по крайней мере, если субмастер дал мне какой-нибудь). Поэтому я пытаюсь привести пример.

Но если вам не нравится объяснять ваши слияния, это может раздражать. Конечно, если вы не объясните свои слияния, вы раздражаете, так что все в конце концов. "Кармический баланс", так сказать.

Источник: https://plus.google.com/+LinusTorvalds/posts/SrePhcj6XJe

Ответ 3

Если вы пытались объединить ветвь master в mybranchSample, то это совершенно нормально.

Git объединяет master в mybranchSample (когда вы делали git pull origin master из ветки mybranchSample) и commits изменения слияния для вас (если только не существует конфликта) и дает вам предварительно заполненный сообщение. Вы можете просто сохранить и выйти.

НО. Если вы просто пытались получить последний код из удаленной ветки master, чтобы объединиться с локальной ветвью master, тогда вы должны выйти в master, а затем вытащить из master.

из вашего утверждения

он объединяет главные файлы в мои файлы. И хотя я не работал над некоторыми файлами от мастера, он показывает список файлов в "Зеленый", когда я печатаю git статус.

Я думаю, вы пытаетесь сделать второй.

поэтому, попробуйте:

git checkout master
git pull origin master

Ответ 4

Я думаю, что у вас проблема с ветвями... Возможны два сценария, которые я могу себе представить:

1) У вас есть удаленная ветвь, mybranchSample, и вы хотите работать над ней - вам нечего делать в данный момент с помощью ведущей ветки (т.е. Вы не хотите объединять свою ветку в мастер или наоборот). Вы говорите в своем вопросе

Когда я извлекаю из мою ветку после извлечения, как...

Но вы делаете git pull origin master, который тянется от мастера. Вместо этого вы должны иметь возможность git version >= 1.6.6 проверить свою удаленную ветку с помощью

git fetch
git checkout mybranchSample

2) Вы пытаетесь работать с mybranchSample, но хотите иметь последний код из главного раздела. Тогда имеет смысл, что может потребоваться слияние, как сказал Ананд С.

Ответ 5

Причина, по которой это происходит только с вами, заключается не в том, что ваш конфиг другой, а в том, что ветка, с которой вы сливаетесь, отличается.

Причиной для файлов в diff, которые вы не изменили, является то, что после слияния новый коммит должен выполнить родительский фиксатор: фиксация, которую вы выполнили, и новейшая фиксация на master. Новый коммит содержит все изменения/файлы. Поэтому, если вы отличаетесь от нового до вашего последнего комманда, вы увидите все файлы, которые были изменены/добавлены, которые были изменены/добавлены на master, пока ваша ветка не синхронизирована с мастер-ветвь.