Прежде чем использовать pull, я хочу проверить, нет ли различий между моим локальным и github-мастером.Как проверить различия между локальными и github до выталкивания
Как я могу это сделать?
Заранее спасибо.
Прежде чем использовать pull, я хочу проверить, нет ли различий между моим локальным и github-мастером.Как проверить различия между локальными и 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
отдельно, как правило, a good idea.
Если вас не интересуют данные, которые выводятся git diff
, вы можете просто запустить git cherry
, который выведет список сообщений о том, что удаленная ветка отслеживания впереди вашей локальной ветви.
Например:
git fetch origin
git cherry master origin/master
Выведет что-то вроде:
+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9
Указывает, что есть два коммиты в моей удаленного филиала отслеживания, которые не были объединены в моей местной ветви.
Это также работает по-другому:
git cherry origin/master master
покажет вам список локальных коммитов, которые вы не подтолкнули к удаленному репозиторию еще.
Спасибо, только то, что мне нужно. Просто чтобы понять это: если результат git cherry пуст, чем нет ничего для сбора вишни, и мое местное репо обновлено, верно !? – eyecatchUp
Да, это правильно. – braitsch
Вы также можете использовать подробный вариант '-v', чтобы отображать сообщения коммитов. Например: 'git cherry -v origin/master master' будет выводить:' + 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1 Исправлена ошибка ' – Yoluk
И еще одна полезная команда, чтобы сделать это (после извлечения мерзавец) является:
git log origin/master ^master
Это показывает коммиты, которые по происхождению/мастера, но не в мастера. Вы также можете сделать это в противоположном направлении при выполнении git pull, чтобы проверить, какие коммиты будут отправлены на удаленный.
Спасибо за хорошее объяснение. –
, если у вас установлено дистанционное отслеживание, тогда команды немного упрощаются: «git fetch» для извлечения, «git diff .. @ {u}», чтобы увидеть различия.Я никогда не могу сохранить происхождение, мастер и источник/мастер прямо, поэтому короткие команды помогают много – ChrisBob
Я пробовал ваш метод и не получал никаких выходов из 'git diff master origin/master' и его противоположности, но' git status' сообщает me 'Ваша ветка опережает« происхождение/мастер »на 4 коммита.« Что происходит? – Jason