git pull和git clone的区别详解
目录
网上看好多人解释pull和clone的区别,说什么pull是更新本地代码,clone是本地从无到有的过程,但有一点没提到,恰好我今天又犯了这个问题,因为我原来都是直接从远程仓库pull,今天突然发现发现pull不能用,clone才生效,我才意识到这个问题。决定记录一下。
使用方法
换个说法
如果只想知道怎么用就不用往下看了,如果想知道原因继续看。
1 git pull
适用于从用户有权限的仓库下拉代码,不管本地有没有代码。
因为我平时下拉代码都是直接。
1.1 我有权限的仓库
我有权限的仓库指的是我自己的,或者团队中我可以使用的仓库。
要使用首先你要确定已经连接远程仓库。要不然你直接那Github会问你:“😧?什么master?哪个master?你就是老子的master吗?”
所以首先要连接远程仓库。
1.1.1 本地没代码
用于显示当前本地仓库连接的远程仓库,你可以连接好几个。然后一个仓库是成对存在的,一个上传一个下拉。前边origin我一般称为远程仓库代称,后边的是你的连接方式。
现在显示我连接了一个github的远程仓库取名叫origin。
空白仓库直接使用就可以下拉代码了。
1.1.2 本地有代码
本地有代码是什么情况。
为什么要呢?不同电脑上代码版本不一样。所以为了减少工作并且保证代码版本一致,要在每次写代码的时候下拉代码。在写完之后push到远程仓库。画个图解释一下。
1.2 我没权限的仓库
没权限的仓库指的是别人的仓库。别人不给权限,你当然不能随意修改人家的代码了。
没权限的仓库不能使用。比如:
今天我像往常一样去下载代码。但是这是我第一次下载别人的代码。
我像往常一样添加仓库链接,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只有仓库所有者能用。因为你电脑上配置的SSH和你github上的SSH是一对的,只有你在你电脑上使用你的github仓库才能用SSH。
既然仓库所有者才能用SSH,那我换HTTP不就行了。(此时我还没意识到问题的严重性😓)
然后他又提示我:
fatal: unable to access ‘https://github.com/hitvoice/DrQA.git/’: OpenSSL SSL_read: Connection was reset, errno 10054
意思还是我无法连接。这时候我突然意识到了问题😐。这好像是人家的仓库哎,我不能使用remote连接远程仓库之后下拉啊。因为如果我能连上的话就意味着我能随意修改人家的代码。所以我肯定不能使用这样的方式pull代码啊!!!
所以得用
2 git clone
适用于本地没有代码,你要下载。
你连不连接远程仓库都可以,有无仓库权限皆可。
接上边的说,意识到使用之后,我删除了刚才的HTTPS连接远程仓库,然后直接,代码成功下载下来了😎😎😎。
上边说的是别人的仓库,那如果是我有权限的仓库呢?
新建一个空白的本地仓库。直接用SSH clone能成功,那HTTPS必定成功。不用remote能成功,那用了remote也必定成功。(觉得这些稍微会用github的一般不用解释了,如果实在不明白评论区问我。)
到此这篇关于git pull和git clone的区别详解的文章就介绍到这了,更多相关git pull和git clone内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章: