最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

git pull 和 git fetch到底什么區(qū)別?

2022-07-23 12:28 作者:DevWeekly  | 我要投稿

DevWeekly收集整理每周優(yōu)質(zhì)開發(fā)者內(nèi)容,包括開源項目工具資源、技術(shù)文章等方面,每周五首發(fā)于DevWeekly(https://github.com/Jackpopc/DevWeekly),歡迎大家Star并收藏!

Git是一款非常受歡迎,也非常強大的版本管理工具。

但是,它的工作流程相對于SVN等其他版本管理工作也復雜很多,對于剛接觸的同學會有很多操作難以理解。

例如,當我們和其他同學進行協(xié)同開發(fā)時,我們每個人都從遠程倉庫拉取了一份代碼到本地倉庫,此時每個人電腦上的本地倉庫和遠程倉庫都是一致的。

但是,隨著開發(fā)的不斷推進,如果其他同事事先已經(jīng)把修改的代碼推送到遠程倉庫,當我們后面再push時就會發(fā)生沖突。

這時候,就需要先把遠程代碼的最新版本重新拉取一下到本地倉庫,這時候,就會用到git pullgit fetch

在這個過程中,很多同學就有點分不清了,都是拉取遠程倉庫的代碼到本地倉庫,它們的區(qū)別是什么呢?

要想理解它們的工作愿意,首先要對Git倉庫有一個清晰的認識。

在我們開發(fā)過程中,代碼倉庫至少會有3個倉庫/副本:

  • 本地工作目錄:也就是我們開發(fā)過程中正在編輯的工作目錄

  • 本地倉庫:這一點是很多初學者容易忽略和搞混的,由于git是分布式的,所以每個開發(fā)者本地都會有一個本地倉庫,當我們通過git commit提交代碼時,更改就從本地工作目錄提交到了本地倉庫

  • 遠程倉庫:這個應(yīng)該大多數(shù)同學都很清楚,顧名思義,就是在遠程服務(wù)器上存儲的倉庫,例如Github、Gitlab,當我們使用git push推送代碼時,代碼就從本地倉庫推到了遠程倉庫

在很多剛接觸Git的同學意識里,容易理解本地工作目錄和遠程目錄,認為執(zhí)行commit和push就是直接從本地工作目錄推到了遠程倉庫,容易忽略本地倉庫。

現(xiàn)在,理解了Git的工作流,接下來再解釋git pullgit fetch的區(qū)別就簡單多了。

就如同前面提到的,很多同事協(xié)同開發(fā)過程中并不是同步的。例如,A和B兩位開發(fā)者都從遠程倉庫拉了一份最新數(shù)據(jù)到本地倉庫,A修改了代碼之后先推送到遠程倉庫了,這時候B的本地倉庫代碼和遠程倉庫的就不一樣了。如果這時候直接push就會引起沖突。

所以,協(xié)同開發(fā)過程中,在推送代碼之前,首先需要先檢查一下本地倉庫與遠程倉庫的差異,然后把最新的代碼拉到本地,然后再提交、推送。

這時候就會用到git pullgit fetch,它們在完成相同的工作,只是處理方式不同。


git fetch

在拉取代碼過程中,git fetch會首先檢查本地倉庫和遠程倉庫的差異,檢查哪些不存在于本地倉庫,然后將這些變動的提交拉取到本地。

但是,這里請注意,它是把遠程提交拉取到本地倉庫,而不是本地工作目錄,它不會自行將這些新數(shù)據(jù)合并到當前工作目錄中,我們需要繼續(xù)執(zhí)行g(shù)it merge才會把這些變動合并到當前工作目錄。

git pull

git pull和git fetch剛好相反,它直接獲取遠程的最新提交,直接拉取并合并到本地工作目錄,而且在合并過程中不會經(jīng)過我們的審查,如果不仔細檢查,這樣很容易遇到?jīng)_突。

理解了git pull和git fetch的區(qū)別,那么該用哪種方式呢?

相比之下,git fetch是一個更安全的選擇,因為它從你的遠程倉庫拉入所有的提交,但不會對你的本地文件做任何修改。

這給了你足夠時間去發(fā)現(xiàn)遠程倉庫自從你上次拉取后到現(xiàn)在為止發(fā)生的變化。

你可以在合并前檢查哪些文件有變化,哪些文件可能導致沖突。

而git pull相當于運行g(shù)it fetch,然后立即將你的改動合并到本地倉庫。

這樣的確少了一個步驟,但是也會帶來一些風險。

作為一名開發(fā)者,在項目開發(fā)過程中很難繞開git,只有深入理解git的工作原理才能在工作中更加自如的應(yīng)用Git完成項目協(xié)同開發(fā),如果一直處于一知半解的狀態(tài),在版本控制中經(jīng)常會遇到各種各樣的問題。

我寫了一篇關(guān)于Git和Github的入門回答,循序漸進,比較詳細,感興趣的同學可以看一下:

另外,在實踐中我們可以得到更多的鍛煉,也可以加深對于Git的理解。我建議大家可以多參與Github上開源代碼的協(xié)同開發(fā),這樣不僅可以鍛煉對于Git的理解,還有很多額外的好處。

如果還不知道如何加入Github開源項目,可以參考我之前寫的一篇內(nèi)容:

建議大家有空可以多瀏覽Github,有很多非常優(yōu)秀的開源項目。但是,目前Github上項目多如牛毛,而且刷榜現(xiàn)在也非常嚴重,想要找到優(yōu)質(zhì)的項目變得越來越難。這里,給大家推薦Github上一個非常不錯的項目《DevWeekly》,這個項目每周都會精挑細選一些優(yōu)質(zhì)的開源項目,涵蓋C++、JAVA、JavaScript、Python、Go等不同編程語言。此外,還有一些開源工具、優(yōu)秀的技術(shù)文章,喜歡的同學可以Star并收藏一下,每周五會定期更新:

https://github.com/Jackpopc/DevWeekly


git pull 和 git fetch到底什么區(qū)別?的評論 (共 條)

分享到微博請遵守國家法律
桃园市| 漳州市| 石门县| 沿河| 乌拉特前旗| 陆丰市| 鄂托克旗| 康马县| 宁蒗| 东宁县| 汉川市| 苍溪县| 淳化县| 平和县| 寿光市| 自治县| 菏泽市| 滕州市| 若羌县| 汉沽区| 同仁县| 甘肃省| 广州市| 鹤岗市| 长葛市| 新闻| 镇雄县| 什邡市| 茌平县| 鄂州市| 定南县| 博客| 印江| 清水河县| 论坛| 大城县| 玉环县| 连平县| 蒲江县| 玉溪市| 濮阳市|