#8 Git - изучаем команды pull и push

poster
В этом уроке мы разберем, как работают команды git push и git pull, познакомимся с командой git fetch. Разберемся когда короткие версии этих команд могут не работать.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

Всем привет. Сегодня мы разберем с вами подробнее команды git pull и git push. Сначала разберем git pull. До этого мы с вами писали команду git pull и все работало. Что делает эта команда? Внутри себя на самом деле она выполняет две команды:

git fetch
git merge

Команда git fetch сливает все данные с проекта, которые находятся в нашем remote репозитории. Все данные которых у нас нет она сливает, но не применяет в наши ветки. Ее можно использовать безбоязненно даже не думая, что что-то поломается. И потом git merge мерджит текущую ветку с такой же веткой из репозитория.

git merge origin/develop
``

И это померджило бы те изменения, которые мы слили с девелоп ветки в нашу локальную девелоп ветку. Всегда когда вы пишите git pull, происходят вот эти все операции.

На самом деле в повседневной работе я все использую только git pull, и если там при автоматическом мердже были конфликты я их мерджу и продолжаю работу. Git fetch отдельно я не использую.

Теперь про git push. На самом деле это короткая запись команды

```bash
git push origin develop

Здесь мы указываем в какой ремоут мы хотим запушить и на какую ветку. По умолчанию гит настроен так, что команда git push пушит в ветку с таким же именем на сервере, а если ее нет то создает ее.

Очень часто с короткой записью pull и push возникает проблема что команда вываливается с ошибкой, что она не знает с какой ремоут веткой работать.

Давайте рассмотрим на примере:

Создадим новую ветку

git checkout -b cant-pull

И запушим ветку

git push

Ветка запушилась без проблем. Но теперь если мы напишем git pull, то получим замечательную ошибку

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> cant-pull

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

git pull origin cant-pull

Origin - это наш репозиторий и cant-pull - это ремоут ветка. Если мы всегда так будет писать, то оно будет работать. Естественно каждый раз это писать лень, поэтому есть второй вариант.

Второй вариант это указать трекинг информацию для этой ветки и тогда мы всегда будем пулить правильную ветку.

git branch --set-upstream-to=origin/cant-pull

После выполнения этой команды можно спокойно использовать git pull и ошибок не будет.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.