Git教學之git pull和git clone的區別(總結分享)

2022-01-10 22:00:35
本篇文章給大家帶來了Git教學中git pull和git clone的區別相關知識,希望對大家有幫助。

網上看好多人解釋pull和clone的區別,說什麼pull是更新原生程式碼,clone是本地從無到有的過程,但有一點沒提到,恰好我今天又犯了這個問題,因為我原來都是直接從遠端倉庫pull,今天突然發現發現pull不能用,clone才生效,我才意識到這個問題。決定記錄一下。

1 git pull

git pull適用於從使用者有許可權的倉庫下拉程式碼,不管本地有沒有程式碼。

因為我平時下拉程式碼都是直接git pull。

1.1 我有許可權的倉庫

我有許可權的倉庫指的是我自己的,或者團隊中我可以使用的倉庫。

要使用git pull首先你要確定已經連線遠端倉庫。要不然你直接git pull orgin master那Github會問你:「什麼master?哪個master?你就是老子的master嗎?」

所以首先要連線遠端倉庫。

49.png

init初始化空白的本地倉庫,裡邊除了.git啥也沒有

連線遠端倉庫

1.1.1 本地沒程式碼

50.png

git remote -v用於顯示當前本地倉庫連線的遠端倉庫,你可以連線好幾個。然後一個倉庫是成對存在的,一個上傳一個下拉。前邊origin我一般稱為遠端倉庫代稱,後邊的是你的連線方式。

現在顯示我連線了一個github的遠端倉庫取名叫origin。

51.png

空白倉庫直接使用git pull就可以下拉程式碼了。

1.1.2 本地有程式碼

本地有程式碼是什麼情況。

  • 團隊合作,一個倉庫多人使用

  • 你自己的倉庫,你在多臺電腦上使用(比如宿舍一個,實驗室一個)

為什麼要git pull呢?不同電腦上程式碼版本不一樣。所以為了減少工作並且保證程式碼版本一致,要在每次寫程式碼的時候下拉程式碼。在寫完之後push到遠端倉庫。畫個圖解釋一下。

47.png

48.png

1.2 我沒許可權的倉庫

沒許可權的倉庫指的是別人的倉庫。別人不給許可權,你當然不能隨意修改人家的程式碼了。

沒許可權的倉庫不能使用git pull。比如:

今天我像往常一樣去下載程式碼。但是這是我第一次下載別人的程式碼。

52.png

我像往常一樣新增倉庫連結,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是說SSH金鑰無法使用,讓我確認我是否有許可權存取或者這個倉庫是不是存在。

倉庫確實是存在的。所以肯定是我沒有許可權。

53.png

解釋一下三步操作:

  • 新增遠端倉庫,用SSH連線

  • 從倉庫master分支下拉程式碼

  • 刪除我新增的遠端倉庫(既然不能用我當然刪掉了)

這時候我想起來:SSH只有倉庫所有者能用。因為你電腦上設定的SSH和你github上的SSH是一對的,只有你在你電腦上使用你的github倉庫才能用SSH。

既然倉庫所有者才能用SSH,那我換HTTP不就行了。(此時我還沒意識到問題的嚴重性)

54.png

我又新增了https的連線

第二步我又下拉的倉庫

然後他又提示我:

fatal: unable to access 'github.com/hitvoice/Dr…': OpenSSL SSL_read: Connection was reset, errno 10054

意思還是我無法連線。

這時候我突然意識到了問題:neutral_face:。這好像是人家的倉庫哎,我不能使用remote連線遠端倉庫之後下拉啊。因為如果我能連上的話就意味著我能隨意修改人家的程式碼。所以我肯定不能使用這樣的方式pull程式碼啊!!!

所以得用git clone

2 git clone

git clone適用於本地沒有程式碼,你要下載。你連不連線遠端倉庫。有無倉庫許可權皆可。

接上邊的說,意識到使用git clone之後,我刪除了剛才的HTTPS連線遠端倉庫,然後直接git clone,程式碼成功下載下來了。

55.png

我刪除了上邊的https連線遠端倉庫的方法

git remote -v用於檢視你本地倉庫都連線了哪些遠端倉庫,如果連線了會顯示倉庫代號和連線方式,我這裡輸出空白,就是沒連線任何遠端倉庫的狀態

git clone下載程式碼成功了。

上邊說的是別人的倉庫,那如果是我有許可權的倉庫呢?

新建一個本地倉庫。很明顯是成功的。SSH能成功,那HTTPS必定成功。不用remote能成功,那用了remote也必定成功。

56.png

推薦學習:《》

以上就是Git教學之git pull和git clone的區別(總結分享)的詳細內容,更多請關注TW511.COM其它相關文章!