Подтвердить что ты не робот

Как проверить различия между локальными и github до вытягивания

Прежде чем использовать pull, я хочу проверить, нет ли различий между моим локальным и github-мастером.

Как я могу это сделать?

Спасибо заранее.

4b9b3361

Ответ 1

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 отдельно обычно хорошая идея.

Ответ 2

Если вас не интересуют детали, которые вызывают git diff, вы можете просто запустить git cherry, который выведет список фиксаций вашей ветки удаленной отслеживания, которая впереди вашей локальной ветки.

Например:

git fetch origin
git cherry master origin/master

Выведет что-то вроде:

+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9

Указывает, что в моей ветке удаленного отслеживания есть две коммиты, которые не были объединены в мою локальную ветвь.

Это также работает по-другому:

    git cherry origin/master master

Покажет вам список локальных коммитов, которые вы еще не нажали в удаленный репозиторий.

Ответ 3

И еще одна полезная команда для этого (после git fetch):

git log origin/master ^master

Здесь показаны фиксации, которые находятся в начале/главном, но не в главном. Вы также можете сделать это в обратном случае при выполнении git pull, чтобы проверить, какие коммиты будут отправлены на удаленный.