2015-10-05 69 views
0

我想了解何時使用get fetch而不是git pull。我之前讀過(例如herehere),git pull和get fetch之間的區別在於pull執行了一次獲取,然後是合併。除此之外,這一切都很好,等等 - 如果它不合並,實際執行的操作是什麼?如果您沒有合併到本地存儲庫,它甚至意味着從遠程存儲庫獲取更新?如果不合並,git fetch會執行什麼操作?

例如,假設我的本地存儲庫有三個提交後,一個提交在遠程存儲庫之前。如果我做了一個git pull,我會在我的本地存儲庫中看到這三個提交,如果存在合併衝突,那麼在某些文件中可能會出現「< < < < < < < HEAD」。 git日誌將會有額外的提交。

如果我做一個抓取,這三個提交不會出現在我的本地存儲庫?如果他們這樣做,它與拉力有什麼不同?它處理衝突的方式與拉動方式不同還是存在其他差異?

+2

可能重複['git pull'和'git fetch'之間的區別?](http://stackoverflow.com/questions/292357/what-are-the-differences-between-git-pull -and-git-fetch) – Makoto

回答

1

你的git倉庫分別存儲關於本地和遠程分支的數據。當您使用git pushgit pull時,git通常會將您的本地分支(例如develop)與遠程分支(例如origin/develop)連接起來。如果您執行git fetch,它只會更新遠程分支的本地副本。你可以通過做git checkout origin/develop來看到。如果您想隨後更新您的本地分支,請運行git merge origin/develop

TL; DR; git pull ~= git fetch + git merge

+0

有趣。我認爲這填補了我理解獲取/拉取中的缺失鏈接。謝謝。 –

+0

這裏是[進一步閱讀](https://git-scm.com/book/en/v2/Git-Internals-Git-References)關於git引用(存儲關於什麼提交你的分支,標籤等的信息的東西)指向)。 – Sam

相關問題