Я не могу найти хорошее объяснение этого.
Я знаю, что делает git pull:
1) a выборка, т.е. все дополнительные фиксации с сервера копируются в локальное репо, а указатель перехода источника/мастера перемещается в конец цепочки фиксации
2) a слияние ветки origin/master в ведущую ветвь, указатель главной ветки, перемещающийся к вновь созданному фиксации, в то время как указатель начала/мастер остается.
Я предполагаю, что git push делает что-то очень похожее, но я точно не знаю. Я считаю, что он делает одно из них или что-то подобное или что-то еще (?):
- копирует все локальные коммиты и делает слияние там (обратное тому, что делает git pull); но в этом случае у сервера нет моей локальной ветки мастера, поэтому я не вижу, что это такое слияние.
ИЛИ
- объединяет мою ведущую ветвь в начало/мастер, нажав итоговую фиксацию на сервер и связывая ее рядом с существующим конечным фиксатором, также перемещая мастер сервера; это не кажется правильным, потому что тогда местное происхождение/мастер не синхронизируется с сервером.
В настоящее время я использую git для основных операций, поэтому у меня все в порядке, но я хочу полностью понять эти внутренние функции.