總結一下
update
fetch操作的本質是更新repo所指定遠程分支的頭指針(server->refs/remotes/xxx/)
merge操作的本質是合併當前分支和指定的頭指針(refs/remotes/xxx->refs/heads)
pull操作的本質是fetch + merge
commit
commit的本質是修改了當前分支的頭指針(refs/heads)
push操作本質是提交當前分支頭指針到server,順便也修改了本地存儲的server頭指針(refs/remotes/xxx)
checkout
複製本地分支的本質是拷貝了refs/heads/下的一個頭指針
push本地分支到server的本質是把這個頭指針上傳服務器,順便拷貝了本地存儲的server頭指針(refs/remotes/xxx)
tracking遠程分支的本質是把refs/remotes/下的指針拷貝到了refs/heads下
注:以上過程都沒有涉及數據流。