前面4节将的都是本地的git操作,这节开始讲合并到本地分支后,如何与远程仓库做交互
————————————————————————————————
提要
//生成本地ssh密钥
$ ssh-keygen -t rsa -C "youremail@example.com"
//关联远程仓库
$ git remote add origin git@github.com:ls199242/DemoRepo.git
//查看当前关联的远程仓库
$ git remote
//push当前本地仓库代码到远程仓库的master
$ git push -u origin master
//pull远程仓库master到本地
$ git pull origin master
//首次拉去会因两个仓库非相关而失败,需要在后面指定允许
$ git pull origin master --allow-unrelated-histories
//克隆一个远程仓库到本地
$ git clone git@github.com:ls199242/DemoRepo.git
准备工作
在与远程仓库协同工作之前,需要先创建SSHKey,如果没有创建过,则新建一个这样的文件
$ ssh-keygen -t rsa -C "youremail@example.com"
意思是生成一个ssh key 后面引号里的是你的邮箱 生成好后,会告诉你生成文件的目录地址,一般是在C盘->User目录->当前用户目录下,有一组文件
其中id_rsa.pub就是要配置在远端的公钥,需要配置在github或coding上,才可以进行代码的获取与推送
一、创建远程仓库
可以使用github(墙内比较慢),或使用coding(墙内,中文操作),创建自己的远程repo
然后给你的远程仓库起个名字,可以选择初始化仓库,创建一个readme文件
这时远程仓库就创建好了,但是他是空的
二、关联远程仓库与本地仓库
如果你已经有了一个本地的工作目录和本地仓库,你可以选择将远程空仓库和这个仓库关联起来
$ git remote add origin git@github.com:ls199242/DemoRepo.git
后面git...是我的远程仓库的地址
当你的本地仓库没有关联远程仓库时,你输入指令git remote是不会有输出的
指令里面的origin就是远程仓库的名称,和本地的master对应
当你关联了远程仓库后再输入git remote ,会返回相应的远程仓库的名称
$ git remote
origin
此时就可以提交本地工作区的修改了
$ git push -u origin master
-u表示将远程仓库的master分支和本地的master分支进行关联,如果不设置也可以,不过每次都要敲origin master
如果第一次设置了-u,则后面的推送操作可以直接输入git push
push之后,本地工作区的修改就已经同步到远程仓库上了
如果在push时发生了错误,他会告诉你远程有最新的修改你没有获取,不能提交,则需要先pull才可以再执行提交
$ git pull origin master
From git.coding.net:shaneLau/Shane.Project
* branch master -> FETCH_HEAD
Already up-to-date.
这里pull的时候也可能发生错误,在git版本2,9之后会出现,大意是两个不关联的仓库无法pull,解决办法是在指令后加上一句
$ git pull origin master --allow-unrelated-histories
输入这句指令后会进入vim(linux/unix的编辑器),你需要输入提交的comment,然后按esc退出,再输入:wq/:x 或:exit 就可以回到git bash窗口
然后pull就可以成功了,之后再push
三、克隆远程仓库
如果远程存在一个仓库,这时本地想要同步远程仓库的内容,可以使用
$ git clone git@github.com:ls199242/DemoRepo.git
最后面是远程仓库地址,在指定的目录执行上面的命令,在本地就可以创建一个工作区+版本库,并且会同步获取远程仓库的内容