git pull 與 git push 區別

git pull 與 git push 區別


結論先行:

1、git pull = git fetch + git merge
2、git fetch 只會將本地庫所關聯的遠程庫commit ID 更新到最新
3、git pull 將本地庫所關聯的遠程庫commit ID 更新到最新的同時,還自動合併了遠程倉庫的代碼(衝突另外說)

白菜實驗一:

人物:小白與小菜
前提:協同開發,關聯同一個遠程倉庫,本地版本相同
假設:小白添加一個25M的 文件後提交併推送到遠程倉庫

小菜在本地執行 git fetch
執行 git diff / git reflog / git log 結果無差異
執行 git status 提示落後遠程倉庫一個版本

查看並比較 小白與小菜 的文件夾屬性
小白的文件夾明顯比小菜的文件夾多了 25M

此時,在本地看不到任何區別,只是知道落後於遠程倉庫多少個版本
(可以推出: git fetch 只會將本地庫所關聯的遠程庫commit ID 更新至最新)

緊接着,小菜在本地執行 git merge
執行 git diff / git status 沒有區別
執行 git reflog / git log 看到了版本升級了

查看並比較 小白與小菜 的文件夾屬性
兩人項目大小差不多,文件基本一樣
(可以推出:git merge 纔會把文件合並過來,此時才修改本地庫代碼)

白菜實驗二:

人物:小白與小菜
前提:協同開發,關聯同一個遠程倉庫,本地版本相同
假設:小白添加一個25M的文件後提交併推送到遠程倉庫

小菜在本地執行 git pull
執行 git diff / git status 結果無差異
執行 git reflog / git log 看到了版本升級了

查看並比較 小白與小菜 的文件夾屬性
兩人項目大小差不多,文件基本一樣
(可以推出:git pull 將本地庫所關聯的遠程庫commit ID 更新到最新的同時,還自動合併了遠程倉庫的代碼)

(比較兩個實驗可以發現:git pull = git fetch + git merge)

知識發現:

1、git status 中的一個功能是 比較 本地庫commit ID 與 本地庫所關聯的遠程庫commit ID 的關係
2、解決衝突後,執行 git diff 無法查看修改了什麼,是由於有兩個上級導致的
3、誰先在工作區,發生衝突後去解決衝突時,誰就在衝突分割符(=====)的上面

渴望力量:

1、不足之處,望各位小夥伴可以多多指出
2、疑問之處,可以私聊,很開心能一起探討

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章