Статус git не показывает разницы между удаленной веткой и локальной веткой.
master
я проверяю новую ветку, dev
, а затем вношу некоторые изменения и нажимаю на remote/dev.dev
в ветку master
.master
, а затем нажимаю git status
.Но когда я нажимаю git pull
, изменения применяются к моей локальной ветке.
Я ожидаю, что вывод будет «Ваша локальная ветвь находится за коммитом удаленного/главного 1», но он сказал, что все до настоящего времени.
Кто-нибудь может объяснить эту ситуацию Зачемgit status
показывает ли нет что есть изменения с пульта?
Я знаю, что это может быть очень глупый вопрос, но спасибо за терпение для новичка.
Не забывайте, что распространяемый* git работает асинхронно. Вам нужно получить новые ссылки с удаленного компьютера, чтобы использовать их локально с помощью таких команд, как status
.
git fetch
для этого достаточно.
* (спасибо phd за исправление словарного запаса)
Да, точно. Git знает только моментальный снимок состояния пультов. Если удаленные устройства изменились, вы должны указать Git вручную обновить его снимок, используя git fetch
Не асинхронный — распределенный.
@phd, не могли бы вы уточнить для меня значение «распределенного», пожалуйста? :)
Это означает «без центрального сервера». Вы всегда работаете со своим локальным репозиторием и время от времени синхронизируете локальный репозиторий с удаленными.
Как сказал @RomainValeri, git fetch
обновил бы снимок вашего пульта, чтобы увидеть новые коммиты в master
.
Однако, запустив git pull
, вы получили эти изменения локально (как вы сказали: «Но когда я нажимаю git pull, изменения применяются к моей локальной ветке»), поэтому ваш мастер больше не отстает.
Так что, если вы просто хотели обновить свои пульты, git fetch
(или git remote update
, то же самое) — это то, что вам нужно; если вы хотите обновить свои пульты и обновить свою локальную ветку с помощью дополнительных коммитов пульта, git pull
это то, что вам нужно.
«получить новые ссылки». Означает ли это, что с моего компьютера статус git будет сравниваться со «старой версией» удаленной ветки, а не с обновленной? А
git fetch
это сделает?