Как проверить различия между локальным и github перед вытягиванием [дубликат]
этот вопрос уже есть ответ здесь:
перед использованием pull, я хочу проверить, есть ли какие-либо различия между моим локальным и GitHub master.
Как я могу это сделать?
3 ответов:
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Это показывает коммиты, которые находятся в origin/master, но не в мастер. Вы также можете сделать это наоборот при выполнении git pull, чтобы проверить, какие коммиты будут отправлены на пульт.
Comments