Прежде чем использовать 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, чтобы проверить, какие коммиты будут отправлены на удаленный.