Как делать правильно сделать pull перед push, если я в другой ветке?
1. Сделал git clone мастера
2. Создал ветку git checkout -b dev_sasha
3. Сделал коммит
Что далее?
Я раньше делал так:
4. git push origin dev_sasha
5. И создавал мердж реквест по ссылке гитлаба
Но КАК ПРАВИЛЬНО спуллить изменения, ведь при мердже могут быть сложности, если у меня старая версия мастер ветки?
1. Обновляете локальный master
2. Переходите в dev_sasha и делаете git merge master. Т.е. мерджите в свою ветку.
3. Если есть конфликты - устраняете и комитите (в свою ветку)
4. Делаете pull request.
Вы должны понять главное, git pull - это стягивание и слияние отслеживаемой ветки (т.е. публичной, той, которая лежит удаленно). Эта команда никак не повлияет на вашу ветку dev_sasha, поэтому толку от нее для вас не будет. Подробнее: https://git-scm.com/book/ru/v2/%D0%92%D0%B5%D1%82%...
Имейте также в виду, что в подавляющем большинстве случаев изменение происходят с той веткой на которой вы находитесь. Остальные ветки при этом никак не затрагиваются. Т.о. на шаге 2 вместо merge вы можете передвинуть свою ветку на голову master командой git rebase master. Результат будет тот же, но история коммитов вытянется в прямую линию.
git pull стягивает все remote ветки, но именно потому что вы работаете один в своей ветке он вам не поможет разрешить конфликты. Посмотрите главу, на которую я дал ссылку, там именно об этом.
Первую и вторую команды можно поменять местами или даже удалить вторую (тогда будет двигаться текущая ветка).
Одной командой можно - используйте alias.
Кроме того, можно использовать параметризованный alias для перемещения любой ветки. https://githowto.com/ru/aliases https://stackoverflow.com/a/25915221/2295915
Дмитрий, но мне надо двигать dev_sasha, а master вообще не трогать, так что всё правильно сейчас?
А первая команда вы сказали не зависит от того в какой ветке сейчас нахожусь/
Моя цель чтобы. моя ветка оказалось точной копией master, только с моими коммитами вверху
Все правильно.
Еще раз: изменения происходят с той веткой, на который вы находитесь. Поэтому чтобы двигать dev_sasha, вы должны на ней находиться в момент выполнения rebase. Вот и все.
Александр, поэтому я и посоветовал вам делать merge, а не rebase. Это гораздо безопаснее (точнее проще отменить), хотя, если честно, git позволяет вернуться к любому коммиту, даже если он уже пропал.