Предыдущий ролик Следующий ролик  

Видео урок: Отправка изменений в обновленный удаленный бранч

Git: обучение основам

В этом ролике мы поговорим о том, что произойдет, когда вы пытаетесь отправить изменения в удаленный репозиторий, в котором уже есть другие изменения. Вот пример ситуации, о которой я говорю. Представим себе, что у нас есть удаленный сервер и локальный репозиторий, и в каждом есть три коммита. Мы пишем fetch, и тогда мы знаем, что они полностью синхронизированы, у нас есть просто три этих коммита. Когда я знаю, что они синхронизированы, я просто начинаю работать. И в следующий час я готов сделать коммит. Я делаю коммит в локальный репозиторий. Но к этому времени, люди, которые работают над проектом, тоже сделали коммиты и отправили их в удаленный репозиторий.

Теперь если я попытаюсь отправить туда свои коммиты, удаленный сервер скажет, что он не знает, что ему делать с вашими коммитами, потому что в это время появились новые изменения. Git никогда не попытается сделать слияние во время отправки данных. Вместо этого Git скажет, что была добавлена новая информация, и что он не знает, что ему делать. Вам нужно забрать изменения, которые находятся на удаленном сервере, отсортировать их со своей стороны и попробовать снова. Итак, пишем fetch. У нас есть новая информация о том, что есть на удаленном сервере, и теперь мы видим, в чем проблема - здесь есть несколько других коммитов.

Но это не решает нашу проблему. Нам все равно нужно сделать слияние. Это не потому что возник конфликт, это не потому что я изменил строку 37 в index.html и кто-то другой изменил строку 37 в index.html, а потому что здесь появились новые коммиты. В данном случае мы прописываем git merge origin/master, тогда мои изменения попадут в origin/master, и будет создан новый коммит слияния, затем я могу снова отправить изменения, и удаленный сервер их примет.

Если бы у меня возник конфликт при слиянии, мне пришлось бы его разрешить, как при обычном разрешении конфликтов при слиянии. Но обычно у вас даже не возникнет конфликт, вам просто нужно будет сделать слияние, чтобы отправить информацию на удаленный сервер. Запомните, если вы не можете отправить данные на удаленный сервер, вам просто нужно прописать fetch, затем merge, затем снова push. Это способ убедиться, что у нас есть все изменения.