Git не загружает файлы.Git толкает целые коммиты .
Коммит - это снимок всего дерева исходных текстов: все файлы.Вот что git push
передает: один или несколько полных снимков.
Когда вы используете git checkout <em>branch</em>
, Git преобразует имя branch
в конкретный коммит, а затем извлекает это Весь коммит - все его файлы - в ваше рабочее дерево.Это своего рода точка коммитов: они представляют собой набор файлов, которые все объединяют .Используйте набор файлов A, чтобы сделать вещь A на ветви A;использовать другой набор файлов B для выполнения операции B на ветви B;и так далее.Если в наборе файлов есть ошибка, которая является текущей подсказкой некоторой ветви B, вы извлекаете полный набор, исправляете ошибку, добавляете исправления и запускаете git commit
, чтобы сказать: Теперь ветвь Bозначает этот новый коммит, который я только что сделал - используя всех этих файлов. Новый коммит представляет новый снимок, который делает вещь B.
Следовательно, git push
выдвигает все новыеснимки, которые вы сделали, которых у другого Git уже нет.Они добавляют новые снимки в их коллекцию «всех когда-либо сделанных снимков».
Обратите внимание, что противоположностью push
является fetch
, а не pull
!Этот неправильный глагол произошел из-за маленькой ошибки, допущенной Git на раннем этапе, с которой нам всем приходится жить сейчас.Использование git pull
означает запустить git fetch
, затем запустить git merge
. Это дополнительный шаг, который git push
не делает (и не может) делать.Мы получаем, затем объединяем, затем нажимаем;затем мы выбираем, объединяем и снова нажимаем по мере необходимости.Глагол pull
объединяет два, но оказывается, что между этими двумя действиями часто есть что-то сделать, или вместо использования merge
.Когда нет - когда можно получить и немедленно слить - , тогда git pull
более удобно.Но я советую сначала изучить их отдельно.
Подробнее об этом, когда вы будете готовы, см. Что именно делает GIT PUSH?