0

Такая проблема я пользуюсь vim и каждый раз когда я делаю git pull то изменения автоматически стягиваются и мержатся

Мне нужно не так, я хочу получить изменения посмотреть какие файлы получены и что в них было изменено и потом сделать слияние

Так сказать вручную сделать процесс

А то так получается я делаю git pull и получаю сообщение о авто мердже, а что там было в авто мердже не понятно

Sirop4ik
  • 10,954
  • я пользуюсь vim – а как это влияет? – Nick Volynkin Jul 10 '17 at 12:14
  • @NickVolynkin ну это я просто, чтоб было ясно что я использую в данной ситуации – Sirop4ik Jul 11 '17 at 09:48
  • Ясно. Краткий ответ от меня: делайте все коммиты в фиче-ветки, никогда не в мастер. Тогда у вас не будет (почти никогда) проблем с мержем. Подробнее: https://ru.stackoverflow.com/a/573773/181472. – Nick Volynkin Jul 11 '17 at 10:06
  • Пока что-то нет времени написать подробный ответ тут. ) – Nick Volynkin Jul 11 '17 at 10:07

2 Answers2

3

Можно всегда делать git fetch, а потом ручками все сливать. Но как по мне - это закат солнца вручную. Есть более красивые пути. ff-only:

git pull --ff-only

В этом случае есть можно утянуть без мерджа - все пройдет хорошо, если нет - не будет мерджа и команда возвратит ненулевой код возврата. Удобно для скриптов. Настраивается и в конфиге - pull.ff

Вторая штука - --no-commit

git pull --no-commit

в этом случае, если возникнет необходимость мерджа, то сам мердж произойдет, но не будет коммититься. То есть, будет возможность решить все ручками и закоммитить.

Самое вкусное, но и самое "страшное для новичков" - --rebase

git pull --rebase

В этом случае, если есть изменения в удаленной ветки и в локальной произойдет ребейз, для любителей ровной истории самое оно. Если говорить по-простому, то произойдет следующее - Ваши последние изменения будут запомнены, удаленная ветка подтянута и изменения приложатся поверх. Ещё проще - это все будет выглядеть как будто только что притянули изменения (припулили) и сделали свои локальные изменения. Естественно, если изменения конфликтуют, то git предложит все решить. Иногда и автоматом.

Nick Volynkin
  • 34,094
KoVadim
  • 112,121
  • 6
  • 94
  • 160
  • Мне кажется вот эта команда лучше git pull --no-commit. То есть я смогу взять мердж и посмотреть, что мне нужно а что нет и уже сделать коммит самому. Вроде как то, что нужно... Только не пойму как посмотреть файлы которые были смержены - ведь я хочу проверить что все в порядке и ничего лишнего не появилось а если появилось то убрать – Sirop4ik Jul 10 '17 at 09:24
  • git status обычно отвечает на 99% подобных вопросов. – KoVadim Jul 10 '17 at 09:25
  • Я если честно не до коца понял что все таки лучше git pull --no-commit или git pull --rebase? – Sirop4ik Jul 10 '17 at 09:58
  • Они делают разные вещи. Мердж или ребейз - известный холивар. – KoVadim Jul 10 '17 at 10:09
  • ИМХО, главный недостаток pull'а в том, что у merge-коммита первым предком будет моя feature-ветка, а не master. В некоторых случаях это сильно мешает и остается только fetch + checkout + merge – Герман Борисов Jul 12 '17 at 10:31
2

я хочу получить изменения

Для этого делайте git fetch. Эта команда стягивает все изменения с удаленного репозитория, но не мержит их.

посмотреть какие файлы получены и что в них было изменено

Для этого делайте git log master..origin/master. Показывает лог между вашим мастером и удаленным.

потом сделать слияние

Для этого делайте git merge FETCH_HEAD. Мержит ваш мастер с тем, что было стянуто.