Прежде чем использовать pull, я хочу проверить, нет ли различий между моим локальным и github-мастером.
Как я могу это сделать?
Спасибо заранее.
Прежде чем использовать pull, я хочу проверить, нет ли различий между моим локальным и github-мастером.
Как я могу это сделать?
Спасибо заранее.
git pull действительно эквивалентен запуску git fetch, а затем git merge. git fetch обновляет так называемые ветки удаленного отслеживания - обычно это те, которые выглядят как origin/master, github/experiment и т.д., Которые вы видите с помощью git branch -r. Они похожи на кеш состояния ветвей в удаленном репозитории, которые обновляются, когда вы выполняете git fetch (или успешный git push).
Итак, предположим, что у вас есть удаленный вызов origin, который ссылается на ваш репозиторий GitHub, вы бы сделали:
git fetch origin
... и затем выполните:
git diff master origin/master
..., чтобы увидеть разницу между вашим master и тем, что находится на GitHub. Если вы довольны этими различиями, вы можете объединить их с помощью git merge origin/master, предполагая, что master является вашей текущей ветвью.
Лично я считаю, что выполнение git fetch и git merge отдельно обычно хорошая идея.
Если вас не интересуют детали, которые вызывают git diff, вы можете просто запустить git cherry, который выведет список фиксаций вашей ветки удаленной отслеживания, которая впереди вашей локальной ветки.
Например:
git fetch origin
git cherry master origin/master
Выведет что-то вроде:
+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9
Указывает, что в моей ветке удаленного отслеживания есть две коммиты, которые не были объединены в мою локальную ветвь.
Это также работает по-другому:
git cherry origin/master master
Покажет вам список локальных коммитов, которые вы еще не нажали в удаленный репозиторий.
И еще одна полезная команда для этого (после git fetch):
git log origin/master ^master
Здесь показаны фиксации, которые находятся в начале/главном, но не в главном. Вы также можете сделать это в обратном случае при выполнении git pull, чтобы проверить, какие коммиты будут отправлены на удаленный.