git?pull和git?clone的區(qū)別詳解
網(wǎng)上看好多人解釋pull和clone的區(qū)別,說(shuō)什么pull是更新本地代碼,clone是本地從無(wú)到有的過(guò)程,但有一點(diǎn)沒(méi)提到,恰好我今天又犯了這個(gè)問(wèn)題,因?yàn)槲以瓉?lái)都是直接從遠(yuǎn)程倉(cāng)庫(kù)pull,今天突然發(fā)現(xiàn)發(fā)現(xiàn)pull不能用,clone才生效,我才意識(shí)到這個(gè)問(wèn)題。決定記錄一下。
使用方法
- 有權(quán)限的倉(cāng)庫(kù) 本地?zé)o代碼
git pull
git clone
- 有權(quán)限的倉(cāng)庫(kù) 本地有代碼
git pull
- 無(wú)權(quán)限的倉(cāng)庫(kù) 本地?zé)o代碼
git clone
- 無(wú)權(quán)限的倉(cāng)庫(kù) 本地有代碼
- 刪了重新下
換個(gè)說(shuō)法
git pull
:必須連接遠(yuǎn)程倉(cāng)庫(kù)才能用??梢杂糜谙螺d完整代碼更新本地代碼。git clone
:只要你想往本地下遠(yuǎn)程倉(cāng)庫(kù)完整的代碼就可以用,不用連接遠(yuǎn)程倉(cāng)庫(kù)(連接了也可以)。 不適用于更新本地代碼。
如果只想知道怎么用就不用往下看了,如果想知道原因繼續(xù)看。
1 git pull
git pull
適用于從用戶(hù)有權(quán)限的倉(cāng)庫(kù)下拉代碼,不管本地有沒(méi)有代碼。
因?yàn)槲移綍r(shí)下拉代碼都是直接git pull
。
1.1 我有權(quán)限的倉(cāng)庫(kù)
我有權(quán)限的倉(cāng)庫(kù)指的是我自己的,或者團(tuán)隊(duì)中我可以使用的倉(cāng)庫(kù)。
要使用git pull
首先你要確定已經(jīng)連接遠(yuǎn)程倉(cāng)庫(kù)。要不然你直接git pull orgin master
那Github會(huì)問(wèn)你:“???什么master?哪個(gè)master?你就是老子的master嗎?”
所以首先要連接遠(yuǎn)程倉(cāng)庫(kù)。
- init初始化空白的本地倉(cāng)庫(kù),里邊除了
.git
啥也沒(méi)有 - 連接遠(yuǎn)程倉(cāng)庫(kù)
1.1.1 本地沒(méi)代碼
git remote -v
用于顯示當(dāng)前本地倉(cāng)庫(kù)連接的遠(yuǎn)程倉(cāng)庫(kù),你可以連接好幾個(gè)。然后一個(gè)倉(cāng)庫(kù)是成對(duì)存在的,一個(gè)上傳一個(gè)下拉。前邊origin我一般稱(chēng)為遠(yuǎn)程倉(cāng)庫(kù)代稱(chēng),后邊的是你的連接方式。
現(xiàn)在顯示我連接了一個(gè)github的遠(yuǎn)程倉(cāng)庫(kù)取名叫origin。
空白倉(cāng)庫(kù)直接使用git pull
就可以下拉代碼了。
1.1.2 本地有代碼
本地有代碼是什么情況。
- 團(tuán)隊(duì)合作,一個(gè)倉(cāng)庫(kù)多人使用
- 你自己的倉(cāng)庫(kù),你在多臺(tái)電腦上使用(比如宿舍一個(gè),實(shí)驗(yàn)室一個(gè))
為什么要git pull
呢?不同電腦上代碼版本不一樣。所以為了減少工作并且保證代碼版本一致,要在每次寫(xiě)代碼的時(shí)候下拉代碼。在寫(xiě)完之后push到遠(yuǎn)程倉(cāng)庫(kù)。畫(huà)個(gè)圖解釋一下。
1.2 我沒(méi)權(quán)限的倉(cāng)庫(kù)
沒(méi)權(quán)限的倉(cāng)庫(kù)指的是別人的倉(cāng)庫(kù)。別人不給權(quán)限,你當(dāng)然不能隨意修改人家的代碼了。
沒(méi)權(quán)限的倉(cāng)庫(kù)不能使用git pull
。比如:
今天我像往常一樣去下載代碼。但是這是我第一次下載別人的代碼。
我像往常一樣添加倉(cāng)庫(kù)鏈接,git pull下拉。但是他提示我:
Permission denied (publickey).fatal: Could not read from remote repository.
Please make sure you have the correct access rightsand the repository exists.
Permission denied是說(shuō)SSH密鑰無(wú)法使用,讓我確認(rèn)我是否有權(quán)限訪問(wèn)或者這個(gè)倉(cāng)庫(kù)是不是存在。倉(cāng)庫(kù)確實(shí)是存在的。所以肯定是我沒(méi)有權(quán)限。
解釋一下三步操作:
- 添加遠(yuǎn)程倉(cāng)庫(kù),用SSH連接
- 從倉(cāng)庫(kù)master分支下拉代碼
- 刪除我添加的遠(yuǎn)程倉(cāng)庫(kù)(既然不能用我當(dāng)然刪掉了)
這時(shí)候我想起來(lái):SSH只有倉(cāng)庫(kù)所有者能用。因?yàn)槟汶娔X上配置的SSH和你github上的SSH是一對(duì)的,只有你在你電腦上使用你的github倉(cāng)庫(kù)才能用SSH。
既然倉(cāng)庫(kù)所有者才能用SSH,那我換HTTP不就行了。(此時(shí)我還沒(méi)意識(shí)到問(wèn)題的嚴(yán)重性??)
- 我又添加了https的連接
- 第二步我又下拉的倉(cāng)庫(kù)
然后他又提示我:
fatal: unable to access ‘https://github.com/hitvoice/DrQA.git/’: OpenSSL SSL_read: Connection was reset, errno 10054
意思還是我無(wú)法連接。這時(shí)候我突然意識(shí)到了問(wèn)題??。這好像是人家的倉(cāng)庫(kù)哎,我不能使用remote連接遠(yuǎn)程倉(cāng)庫(kù)之后下拉啊。因?yàn)槿绻夷苓B上的話就意味著我能隨意修改人家的代碼。所以我肯定不能使用這樣的方式pull代碼?。。?!
所以得用git clone
2 git clone
git clone
適用于本地沒(méi)有代碼,你要下載。
你連不連接遠(yuǎn)程倉(cāng)庫(kù)都可以,有無(wú)倉(cāng)庫(kù)權(quán)限皆可。
接上邊的說(shuō),意識(shí)到使用git clone
之后,我刪除了剛才的HTTPS連接遠(yuǎn)程倉(cāng)庫(kù),然后直接git clone
,代碼成功下載下來(lái)了??????。
- 我刪除了上邊的https連接遠(yuǎn)程倉(cāng)庫(kù)的方法
git remote -v
用于查看你本地倉(cāng)庫(kù)都連接了哪些遠(yuǎn)程倉(cāng)庫(kù),如果連接了會(huì)顯示倉(cāng)庫(kù)代號(hào)和連接方式,我這里輸出空白,就是沒(méi)連接任何遠(yuǎn)程倉(cāng)庫(kù)的狀態(tài)git clone
下載代碼成功了。
上邊說(shuō)的是別人的倉(cāng)庫(kù),那如果是我有權(quán)限的倉(cāng)庫(kù)呢?
新建一個(gè)空白的本地倉(cāng)庫(kù)。直接用SSH clone能成功,那HTTPS必定成功。不用remote能成功,那用了remote也必定成功。(覺(jué)得這些稍微會(huì)用github的一般不用解釋了,如果實(shí)在不明白評(píng)論區(qū)問(wèn)我。)
到此這篇關(guān)于git pull和git clone的區(qū)別詳解的文章就介紹到這了,更多相關(guān)git pull和git clone內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Jenkins使用publish?html?report插件展示HTML報(bào)告的方法
這篇文章主要介紹了Jenkins使用publish?html?report插件展示HTML報(bào)告的方法,展示普通的html如何展示在jenkins上,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解)
這篇文章主要介紹了Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Visual?Studio實(shí)用調(diào)試技巧大全
這篇文章主要給大家介紹了關(guān)于Visual?Studio實(shí)用調(diào)試技巧的相關(guān)資料,如果你還沒(méi)有使用過(guò)這些技巧,希望這篇博文能幫你發(fā)現(xiàn)它們,它們學(xué)起來(lái)很容易,能幫你節(jié)省很多時(shí)間,需要的朋友可以參考下2023-06-06Gitlab新建用戶(hù)無(wú)法收到郵件的問(wèn)題解決辦法
在配置GitLab郵件服務(wù)時(shí),可能因?yàn)榄h(huán)境或版本差異遇到問(wèn)題,本文就來(lái)介紹一下Gitlab新建用戶(hù)無(wú)法收到郵件的問(wèn)題解決辦法,感興趣的可以了解一下2024-11-11玩轉(zhuǎn)VSCode插件之Remote-SSH的使用情況
這篇文章主要介紹了玩轉(zhuǎn)VSCode插件之Remote-SSH的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08綁定/約束 (binding)指兩個(gè)東西之間的關(guān)聯(lián)
綁定/約束 (binding)指兩個(gè)東西之間的關(guān)聯(lián)。如 名字 與它所代表的事物。又如屬性與實(shí)體之間的關(guān)聯(lián),又或者符號(hào)與操作之間的關(guān)聯(lián)。2011-01-01