【Git】五、远程仓库

前面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

最后面是远程仓库地址,在指定的目录执行上面的命令,在本地就可以创建一个工作区+版本库,并且会同步获取远程仓库的内容

posted @ 2017-07-02 15:58  l.shane  阅读(274)  评论(0编辑  收藏  举报