Git не общается с сетью, если вы явно не скажете это с помощью команды, такой как push
, fetch
или pull
(которая просто fetch
+ merge
). Так что да, вам нужно периодически pull
или fetch
, чтобы увидеть изменения в удаленном хранилище.
Поскольку вы смогли сделать sh, мы знаем, что больше не было внесено никаких изменений в feature
на origin
. git push
не объединится для вас, когда вы наберете sh, вы должны быть в курсе.
Нужно ли мне снова извлекать из этой же ветки, или файлы, которые мне подходят потом вносить изменения в pu sh?
Что делает Git "распределенным", так это то, что вы можете продолжать вносить изменения локально, а затем согласовывать их с любыми изменениями в восходящем направлении. Если вы вносите изменения локально, а другие вносят изменения удаленно, когда вы git pull
, эти изменения будут объединены вместе. git pull
- это git fetch
плюс git merge
.
Вот пример, где некоторые изменения были внесены в ветку удаленно (фиксирует F и G), а также локально (фиксирует 1 и 2).
origin
A - B - C [master]
\
D - E - F - G [feature]
local
[origin/master]
A - B - C [master]
\
D - E [origin/feature]
\
1 - 2 [feature]
Если вы попытаетесь сделать sh это, Git не допустит этого. Ваша ветка "разошлась". git push
не сольется для вас. Вам нужно git pull
, чтобы получить актуальную информацию.
Если вы git pull
пока feature
извлечены Git будет git fetch
последняя версия, а затем git merge origin/feature
.
# Illustrating `git pull` as two steps
$ git fetch origin
[origin/master]
A - B - C [master]
\
D - E - F - G [origin/feature]
\
1 - 2 [feature]
$ git merge origin/feature
[origin/master]
A - B - C [master]
\
D - E - F - G [origin/feature]
\ \
1 - 2 - M [feature]
Теперь вы в курсе событий и в безопасности: pu sh.
Если вы хотите проверять изменения, но не объединять их, можно периодически git fetch
.