有一个叫做GitHub的的网站,该网站是提供Git仓库托管服务的,所以,首先注册一个GitHub账号,就能免费获得Git远程仓库。
但是如何把本地的项目推送到远程仓库上?如何把远程的一个仓库下载到本地?又是如何使本地与远程相关联呢?
一、本地仓库与远程仓库相关联需要做的设置:
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置,步骤如下:
1、创建SSH Key;在用户主目录下(c/用户/ zyh),看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key: ssh-keygen -t rsa -C "youremail@example.com"(你自己的邮箱地址);如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
2、登陆GitHub,点击头像后点击Settings,然后点击SSH and GPG keys,点击new SSH Key,填上说明的Title,在Key文本框里粘贴id_rsa.pub文件的内容,点击add SSH key即可。
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而git支持SSH协议所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
二、把本地代码放到github上:
在本地建了一个仓库(使用git init把某一个空文件夹变成一个空的仓库),在本地写完代码后,你想把这些代码放到远程的github上,步骤如下:
1、在github上新建一个新的仓库:登录github网站,点击New repository, 填入仓库名字,点击Create repository创建仓库;目前,在GitHub上的这个仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
2、把本地的仓库推送到上一步中创建的github的远程仓库中:
git add .
git commit -m '注释' 如果没有确认身份,此处会报错
使用 git config --global user.email "you@example.com"
git config --global user.name "Your Name"确认身份
使用命令: git remote add origin git@github.com:webZyh/cart.git(使用自己的github账户名)
此步骤后本地仓库与github上的仓库已连接关联
git push -u origin master(会报错)
将本地GIT版本库PUSH到一个GITHUB上一个空的版本库时可能会出现如下错误
error:src refspec master does not match any
error: failed to push some refs to......
原因: 本地版本库为空, 空目录不能提交 (只进行了init, 没有add和commit)
解决办法:新建一个文件,然后add和commit后再执行以上命令
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样。
三、克隆一个远程存在的仓库到本地中
假设你用了一台新的电脑,如何把你github上存在的仓库下载到一个崭新的电脑里,步骤如下:
1、创建一个存储项目的文件夹,使用git bash进入该文件夹;
2、登录github网站,进入项目中,点击clone and download,把项目地址复制;
3、在git bash中,使用命令git clone git@github.com:webZyh/cart.git(刚刚复制下来的地址)
即可把项目下载下来。
以上的内容主要是讲如何使用github来管理自己的项目,如何把本地的项目推送到远程仓库上?如何把远程的一个仓库下载到本地?又是如何使本地与远程相关联的?
大部分的知识都是在廖雪峰的git教程上学习的(学习git的话可以去看看),过程自己也亲自测试过,或许可能还存在一些没有发现的问题,以后慢慢发现吧!