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

23

Я тяну от моей ветки :

git checkout mybranchSample
git fetch
git pull origin master

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

  

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

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

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

    
задан Pratik C Joshi 30.12.2015 в 10:11
источник
  • Пожалуйста, не используйте изображение (особенно плохое), чтобы показать нам какой-то текст. –  Denys Séguret 30.12.2015 в 10:36
  • «показать файлы в« зеленом »не много говорит. Он должен каким-то образом называть их (модифицировать, устраивать и т. Д.), –  max630 03.01.2016 в 08:52
  • Вы пытались объединить master в mybranchSample или просто хотели обновить код в master? –  Anand S 03.01.2016 в 16:24
  • Вместо того, чтобы предлагать щедрость, почему бы вам не удалить изображение и включить вывод статуса git, вы, скорее всего, получите результат с вопросом, который имеет соответствующие данные –  Andrew C 07.01.2016 в 23:37
  • 'Показывает зеленые файлы' не полезная информация –  Andrew C 08.01.2016 в 06:29
Показать остальные комментарии

5 ответов

24

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

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

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

    
ответ дан Madara Uchiha 30.12.2015 в 10:14
источник
  • Мой главный вопрос: нужно ли мне беспокоиться об этом? Будет ли что-то неправильно, если я все еще получаю окно и набираю какое-то сообщение? –  Pratik C Joshi 30.12.2015 в 10:19
  • @PratikCJoshi Нет, вам не о чем беспокоиться. –  Madara Uchiha♦ 30.12.2015 в 10:19
  • @MadaraUchiha любая идея, почему только я получаю ошибку, хотя все люди имеют одинаковый контент в файле конфигурации git Host gitserver User git Имя хоста 91.12.12.12 Порт 22 IdentityFile ~ / .ssh / pratikj? –  Pratik C Joshi 30.12.2015 в 10:22
  • @MadaraUchiha, Привет, не могли бы вы ответить на мой вопрос? –  Pratik C Joshi 31.12.2015 в 06:05
  • @PratikCJoshi Вы прочитали ответ? –  Madara Uchiha♦ 31.12.2015 в 14:46
21

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

  

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

     

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

     

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

     

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

Источник: Ссылка

    
ответ дан tne 07.01.2016 в 13:24
источник
  • «Но если вам не нравится объяснять ваши слияния, это может раздражать. Конечно, если вы не объясните свои слияния, вы раздражаете, так что все это будет в конечном итоге». Хах. Классический! –  Kaushik NP 18.04.2018 в 07:17
3

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

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

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

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

  

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

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

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

git checkout master
git pull origin master
    
ответ дан Anand S 03.01.2016 в 16:38
источник
3

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

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

  

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

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

git fetch
git checkout mybranchSample

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

ответ дан misch 08.01.2016 в 12:35
источник
2

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

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

    
ответ дан Martin Rauscher 07.01.2016 в 22:37
источник