参考廖老师Git教程
这里就是将自己本地的git仓库推送到github上去,这样的话github就是我的一个远程仓库了。
首先要注册github账号,由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要设置SSH key
第一步:创建SSH Key,在你的用户目录下看看有没有.ssh目录,如果有了可以跳过这一步,如果没有则到Git Bash里面执行
ssh-keygen -t rsa -C "你的邮箱" ,输入后一路回车就可以,然后就会在你C盘的用户目录,下出现一个.ssh文件夹,里面就会有你要的 id_rsa 私钥 和 id_rsa.pub公钥。
第二步:
登录GitHub,点击设置,选择SSH and GPG keys
标题随便写些什么,然后在key下面粘贴id_rsa.pub文件里面的内容,然后点击Add SSH Key就可以了:
有了这个SSH Key,GitHub就知道你推送的提交确实是你本人推送的,而不是别人冒充的,而且Git支持SSH协议,所以,Github只要知道你的公钥,就可以确认你的身份了。
GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
添加远程库
现在我们在本地已经有一个Git仓库了,又在GitHub上创建了一个仓库,我们现在需要让这两个仓库进行远程同步,这样GitHub上的仓库可以作为我们的备份,而又可以让其他人来协作。
创建仓库的部分不进行详细说明,一键创建就可以,创建后也会有对应的提示你可以对该仓库做些什么,比如从这个仓库克隆出新的仓库,亦可以把一个已有的本地仓库相关联,然后将本地仓库内容推送到GitHub仓库。
这里主要说下我将本地仓库推送到GitHub时出现的问题,
首先在Git Bash中的仓库目录下运行命令:
画线部分记得写你自己的GitHub账号名,不然你就会关联我的账号,关联了也提交不了,因为我的账号里面没有你的SSH KEY,(反斜杠后面不能有空格)
第二步:用命令将本地库的所有内容推送到远程库上去( 由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需:git push origin master):
我这里出了些问题,无法解析主机名,很奇怪,我连接了VPN在浏览器上访问GitHub明明很流畅,
这里使用ssh -T git@github.com 判断是否绑定成功。如果返回successfully 表示成功
还是一样的问题,于是去网上找了下,在stackoverflow上找到了解决办法:
我们在cmd下ping GitHub.com看下结果如何:
还是找不到,这里我们用命令 ipconfig /flushdns 刷新下DNS解析缓存。然后再ping GitHub.com,
应该是可以了,然后再到Git Bash中执行命令看下是否绑定成功。
成功了,还真是,这下执行命令将本地库的所有内容推送到远程库上去应该是没有问题了:
然后到我的GitHub页面看到远程库的内容已经和本地一模一样了:
从现在开始,只要本地做了提交,通过命令:git push origin master 就可以把本地master
分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
小结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
从远程库克隆
假设我们从零开始开发,最好的方式是先创建远程库,然后从远程库克隆,这里再GitHub中创建一个新的仓库,gitskills
选择下面的 使用自叙文件初始化此存储库 ,这样GitHub会自动为我们创建一个README.md
文件。创建完毕后,可以看到README.md
文件:
现在一个远程库准备好了,进入到你想要克隆的目录,下一步是用命令 git clone 克隆一个本地库:
进入到gitskills 可以看出,这就是一个仓库了,README.md也存在,和GitHub上的仓库一模一样。
要克隆一个仓库,首先需要知道仓库的地址,然后使用 git clone 命令克隆。
Git支持多种协议,包括 https ,但通过ssh支持的原生git协议速度最快。
如何将更改的项目同步到GitHub
1.添加所有文件: git add * (git add .)
2.提交到本地仓库:git commit -a -m "提交操作"
3.提交到GitHub:git push origin master
关于提交:
git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件