咱们接着学习git,到目前为止,咱们学习了
git init
git status
git add <file>
git commit (-m <describtion>)
git diff
git log
git rm <file>
git checkout -- <file>
git reset HEAD <file>
具体能够到GIt本地相关操做(一)git本地相关操做(二)查看
接下来咱们继续学习git基于本地仓库与远程仓库交互的,相关操做java
生成密钥
为了保证远程仓库可以惟一识别一电脑主机的操做,同时保证咱们与远程仓库通讯的安全,咱们须要建立一个SSH key而且在git远程仓库中配置,咱们进入linux当前登陆的用户目录中,打开.ssh目录查看是否有"id_rsa"和"id_rsa.pub",若没有就执行如下的命令:linux
ssh-keygen -t rsa -C "example@mail.com"
这里的邮箱也是随意定义的,可是仍是建议有实际意义的,执行完成之后到“~/.ssh/”目录下,能看到上述两个文件,如图:若是没有看到说明执行上述命令不是以当前登陆的用户权限执行的,在明确执行命令的权限后,到对应的用户目录下,就能看到,例如我虽然登陆了guest用户,可是我执行的“sudo ssh-keygen”那么就是root权限,所以文件就生成在root用户目录下的.ssh木有生成了密钥文件
可是咱们但愿执行sudo命令的时候,要在当前用户的路径下生成文件而不是在root用户目录下呢,咱们能够执行如下命令来实现:
sudo ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_keygit
在远程仓库进行注册
笔者使用的是开源中国提供的git服务,你们也能够选择其余的,其操做大同小异。将“id_rsa.pub”公钥中的内容复制 出来添加到远程的git服务中去,具体操做以下图所示:segmentfault
建立远程仓库安全
关联远程仓库
在远程仓库获取http协议的链接或是ssh协议的链接地址,如图:
而后在本地仓库进行关联,使用“git remote add origin <远程仓库地址>”,如图的具体操做:“git remote -vv”用来查看本地仓库关联远程仓库地址ssh
推送文件到远程仓库
目前本地仓库是有文件的,可是远程仓库是空的,咱们须要将本地仓库的文件推送到远程仓库上,这样其余人才能从远程仓库获取到文件进行编辑和修改,实现协同工做的目的。
执行"git push -u origin master"命令,如图:这张图内容比较多,咱们一个一个来讲:
首先,git push是将本地仓库的数据push到远程仓库,-u的做用是本地仓库第一次向远程仓库推送数据时简历关联,origin是指咱们在执行“git remote add origin <远程仓库地址>"之后orgin就表明了远程仓库,而master则是值远程仓库的分支名称,目前远程仓库的分支只有一个默认分支master
而后,咱们执行"git push -u origin master"会有一些朋友出现上图上半部分展现的错误信息,我查了相关资料,意思就是说咱们在新建远程仓库之后,远程仓库会默认建立一些文件,而这些文件本地仓库没有的,这就藏成了。本地仓库和远程仓库都有彼此没有的文件,解决这种情况有两种方案:
强推覆盖远程仓库已有的文件
本地仓库拉取远程仓库的文件,本地实现合并而后再push
本文为了省事使用了第一种方案,实际开发过程当中推荐第二种方案,相关文章连接:https://my.oschina.net/unique...学习
提交编辑到远程仓库
在第5小节的时候,咱们已经将本地仓库与远程仓库的数据实现同步,下面咱们在本地修改一下文件而后再把修改的内容提交到远程仓库。基于以前已经与远程仓库创建了关联,因此此次同步只须要执行"git push"命令便可spa
二.总结.net
ssh key是git远程仓库惟一区分本地仓库主机的标识也是安全通讯的保证code
git remote add origin <远程仓库地址>本地仓库管理远程仓库,而且在本地能够经过orgin来标识, <远程仓库地址>能够是ssh协议地址或是http协议地址
git remote -vv查看本地仓库关联的远程仓库地址信息
git push origin 分支名称将本地仓库的文件推送到远程仓库,-u表示将本地仓库与远程仓库进行管理,仅在第一push时使用,-f表示强推,orgin在这里的表明的含义要明确,分支名称,就是咱们提交的数据是推送到远程仓库的具体分支上
当本地git文件信息与远程仓库文件冲突时的两种解决方案:
强推
本地同步远程仓库数据,本地解决再push
实际中推荐第二种
git clone复制远程仓库的文件到本地目录中