站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

本篇文章給大家?guī)砹薌it教程中g(shù)it pull和git clone的區(qū)別相關(guān)知識,希望對大家有幫助。

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

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

1 git pull

git pull適用于從用戶有權(quán)限的倉庫下拉代碼,不管本地有沒有代碼。

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

1.1 我有權(quán)限的倉庫

我有權(quán)限的倉庫指的是我自己的,或者團隊中我可以使用的倉庫。

要使用git pull首先你要確定已經(jīng)連接遠(yuǎn)程倉庫。要不然你直接git pull orgin master那Github會問你:“什么master?哪個master?你就是老子的master嗎?”

所以首先要連接遠(yuǎn)程倉庫。

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

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

連接遠(yuǎn)程倉庫

1.1.1 本地沒代碼

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

git remote -v用于顯示當(dāng)前本地倉庫連接的遠(yuǎn)程倉庫,你可以連接好幾個。然后一個倉庫是成對存在的,一個上傳一個下拉。前邊origin我一般稱為遠(yuǎn)程倉庫代稱,后邊的是你的連接方式。

現(xiàn)在顯示我連接了一個github的遠(yuǎn)程倉庫取名叫origin。

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

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

1.1.2 本地有代碼

本地有代碼是什么情況。

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

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

為什么要git pull呢?不同電腦上代碼版本不一樣。所以為了減少工作并且保證代碼版本一致,要在每次寫代碼的時候下拉代碼。在寫完之后push到遠(yuǎn)程倉庫。畫個圖解釋一下。

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

1.2 我沒權(quán)限的倉庫

沒權(quán)限的倉庫指的是別人的倉庫。別人不給權(quán)限,你當(dāng)然不能隨意修改人家的代碼了。

沒權(quán)限的倉庫不能使用git pull。比如:

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

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

我像往常一樣添加倉庫鏈接,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密鑰無法使用,讓我確認(rèn)我是否有權(quán)限訪問或者這個倉庫是不是存在。

倉庫確實是存在的。所以肯定是我沒有權(quán)限。

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

解釋一下三步操作:

  • 添加遠(yuǎn)程倉庫,用SSH連接

  • 從倉庫master分支下拉代碼

  • 刪除我添加的遠(yuǎn)程倉庫(既然不能用我當(dāng)然刪掉了)

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

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

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

我又添加了https的連接

第二步我又下拉的倉庫

然后他又提示我:

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

意思還是我無法連接。

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

所以得用git clone

2 git clone

git clone適用于本地沒有代碼,你要下載。你連不連接遠(yuǎn)程倉庫。有無倉庫權(quán)限皆可。

接上邊的說,意識到使用git clone之后,我刪除了剛才的HTTPS連接遠(yuǎn)程倉庫,然后直接git clone,代碼成功下載下來了。

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

我刪除了上邊的https連接遠(yuǎn)程倉庫的方法

git remote -v用于查看你本地倉庫都連接了哪些遠(yuǎn)程倉庫,如果連接了會顯示倉庫代號和連接方式,我這里輸出空白,就是沒連接任何遠(yuǎn)程倉庫的狀態(tài)

git clone下載代碼成功了。

上邊說的是別人的倉庫,那如果是我有權(quán)限的倉庫呢?

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

Git教程之git pull和git clone的區(qū)別(總結(jié)分享)

推薦學(xué)習(xí):《Git教程》

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
中文精品北条麻妃中文| 真实国产乱子伦精品一区二区三区 | 成人区精品一区二区不卡亚洲 | 久99久精品免费视频热77| 国产亚洲精品91| 99久久精品国产片久人| heyzo高无码国产精品| 国产精品久久久福利| 久久精品国产99久久| 伊人精品久久久久7777| 亚洲中文字幕久久精品无码VA | 麻豆AV无码精品一区二区| 91精品国产自产在线观看永久| 精品女同一区二区三区免费播放| 精品国产一区二区三区香蕉| 2019天堂精品视频在线观看| 久久精品亚洲福利| 国产精品成人四虎免费视频| 99re6这里有精品热视频在线| 青青青青久久精品国产h| 精品400部自拍视频在线播放| 中文无码日韩欧免费视频| 国产精品视频你懂的| 国产午夜精品久久久久免费视| 午夜亚洲国产精品福利| 精品伊人久久久久网站| 亚洲精品韩国美女在线| 99re九精品视频在线视频| 99re国产精品| 米奇777四色精品人人爽| 九九精品99久久久香蕉| 99re国产精品视频首页| 国产精品香蕉在线观看| 午夜亚洲国产精品福利| 日韩精品一区二区三区影院| 99久久久国产精品免费无卡顿| 国产精品对白交换视频| 亚洲日韩国产成网在线观看| 国产精品爆乳奶水无码视频 | 一本色道久久88综合亚洲精品高清 | 最新国语自产精品视频在|