git?pull和git?clone的區(qū)別詳解
網(wǎng)上看好多人解釋pull和clone的區(qū)別,說什么pull是更新本地代碼,clone是本地從無到有的過程,但有一點沒提到,恰好我今天又犯了這個問題,因為我原來都是直接從遠程倉庫pull,今天突然發(fā)現(xiàn)發(fā)現(xiàn)pull不能用,clone才生效,我才意識到這個問題。決定記錄一下。
使用方法
- 有權限的倉庫 本地無代碼
git pull
git clone
- 有權限的倉庫 本地有代碼
git pull
- 無權限的倉庫 本地無代碼
git clone
- 無權限的倉庫 本地有代碼
- 刪了重新下
換個說法
git pull
:必須連接遠程倉庫才能用。可以用于下載完整代碼更新本地代碼。git clone
:只要你想往本地下遠程倉庫完整的代碼就可以用,不用連接遠程倉庫(連接了也可以)。 不適用于更新本地代碼。
如果只想知道怎么用就不用往下看了,如果想知道原因繼續(xù)看。
1 git pull
git pull
適用于從用戶有權限的倉庫下拉代碼,不管本地有沒有代碼。
因為我平時下拉代碼都是直接git pull
。
1.1 我有權限的倉庫
我有權限的倉庫指的是我自己的,或者團隊中我可以使用的倉庫。
要使用git pull
首先你要確定已經(jīng)連接遠程倉庫。要不然你直接git pull orgin master
那Github會問你:“???什么master?哪個master?你就是老子的master嗎?”
所以首先要連接遠程倉庫。
- init初始化空白的本地倉庫,里邊除了
.git
啥也沒有 - 連接遠程倉庫
1.1.1 本地沒代碼
git remote -v
用于顯示當前本地倉庫連接的遠程倉庫,你可以連接好幾個。然后一個倉庫是成對存在的,一個上傳一個下拉。前邊origin我一般稱為遠程倉庫代稱,后邊的是你的連接方式。
現(xiàn)在顯示我連接了一個github的遠程倉庫取名叫origin。
空白倉庫直接使用git pull
就可以下拉代碼了。
1.1.2 本地有代碼
本地有代碼是什么情況。
- 團隊合作,一個倉庫多人使用
- 你自己的倉庫,你在多臺電腦上使用(比如宿舍一個,實驗室一個)
為什么要git pull
呢?不同電腦上代碼版本不一樣。所以為了減少工作并且保證代碼版本一致,要在每次寫代碼的時候下拉代碼。在寫完之后push到遠程倉庫。畫個圖解釋一下。
1.2 我沒權限的倉庫
沒權限的倉庫指的是別人的倉庫。別人不給權限,你當然不能隨意修改人家的代碼了。
沒權限的倉庫不能使用git pull
。比如:
今天我像往常一樣去下載代碼。但是這是我第一次下載別人的代碼。
我像往常一樣添加倉庫鏈接,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密鑰無法使用,讓我確認我是否有權限訪問或者這個倉庫是不是存在。倉庫確實是存在的。所以肯定是我沒有權限。
解釋一下三步操作:
- 添加遠程倉庫,用SSH連接
- 從倉庫master分支下拉代碼
- 刪除我添加的遠程倉庫(既然不能用我當然刪掉了)
這時候我想起來:SSH只有倉庫所有者能用。因為你電腦上配置的SSH和你github上的SSH是一對的,只有你在你電腦上使用你的github倉庫才能用SSH。
既然倉庫所有者才能用SSH,那我換HTTP不就行了。(此時我還沒意識到問題的嚴重性??)
- 我又添加了https的連接
- 第二步我又下拉的倉庫
然后他又提示我:
fatal: unable to access ‘https://github.com/hitvoice/DrQA.git/’: OpenSSL SSL_read: Connection was reset, errno 10054
意思還是我無法連接。這時候我突然意識到了問題??。這好像是人家的倉庫哎,我不能使用remote連接遠程倉庫之后下拉啊。因為如果我能連上的話就意味著我能隨意修改人家的代碼。所以我肯定不能使用這樣的方式pull代碼?。。?!
所以得用git clone
2 git clone
git clone
適用于本地沒有代碼,你要下載。
你連不連接遠程倉庫都可以,有無倉庫權限皆可。
接上邊的說,意識到使用git clone
之后,我刪除了剛才的HTTPS連接遠程倉庫,然后直接git clone
,代碼成功下載下來了??????。
- 我刪除了上邊的https連接遠程倉庫的方法
git remote -v
用于查看你本地倉庫都連接了哪些遠程倉庫,如果連接了會顯示倉庫代號和連接方式,我這里輸出空白,就是沒連接任何遠程倉庫的狀態(tài)git clone
下載代碼成功了。
上邊說的是別人的倉庫,那如果是我有權限的倉庫呢?
新建一個空白的本地倉庫。直接用SSH clone能成功,那HTTPS必定成功。不用remote能成功,那用了remote也必定成功。(覺得這些稍微會用github的一般不用解釋了,如果實在不明白評論區(qū)問我。)
到此這篇關于git pull和git clone的區(qū)別詳解的文章就介紹到這了,更多相關git pull和git clone內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Jenkins使用publish?html?report插件展示HTML報告的方法
這篇文章主要介紹了Jenkins使用publish?html?report插件展示HTML報告的方法,展示普通的html如何展示在jenkins上,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下2022-03-03Git恢復之前版本的兩種方法reset、revert(圖文詳解)
這篇文章主要介紹了Git恢復之前版本的兩種方法reset、revert(圖文詳解),文中通過圖文示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07綁定/約束 (binding)指兩個東西之間的關聯(lián)
綁定/約束 (binding)指兩個東西之間的關聯(lián)。如 名字 與它所代表的事物。又如屬性與實體之間的關聯(lián),又或者符號與操作之間的關聯(lián)。2011-01-01