我们接着学习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基于本地仓库与远程仓库交互的,相关操作
一.关联远程仓库
-
生成密钥
为了保证远程仓库能够唯一识别一电脑主机的操作,同时保证我们与远程仓库通信的安全,我们需要创建一个SSH key并且在git远程仓库中配置,我们进入linux当前登录的用户目录中,打开.ssh目录查看是否有"id_rsa"和"id_rsa.pub",若没有就执行以下的命令: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_key
-
在远程仓库进行注册
笔者使用的是开源中国提供的git服务,大家也可以选择其他的,其操作大同小异。将“id_rsa.pub”公钥中的内容复制 出来添加到远程的git服务中去,具体操作如下图所示:
-
创建远程仓库
-
关联远程仓库
在远程仓库获取http协议的连接或是ssh协议的连接地址,如图:
然后在本地仓库进行关联,使用“git remote add origin <远程仓库地址>”,如图的具体操作:“git remote -vv”用来查看本地仓库关联远程仓库地址
-
推送文件到远程仓库
目前本地仓库是有文件的,但是远程仓库是空的,我们需要将本地仓库的文件推送到远程仓库上,这样其他人才能从远程仓库获取到文件进行编辑和修改,实现协同工作的目的。
执行"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"命令即可
7.从远程仓库复制
通过“git clone <ssh地址或htttps地址或http地址>”来下载远程仓库中的文件到本地,我们继续使用之前的远程仓库,在本地换个目录就可以创建一个新的本地仓库,且两个仓库之间互不影响。如图,我们到远程git获取远程仓库的地址:
到本地执行"git clone"命令下载代码:
如图代码已经下载到本地,我们可以通过之前学到命令来看下一下相关的信息,如图:
二.总结
ssh key是git远程仓库唯一区分本地仓库主机的标识也是安全通信的保证
git remote add origin <远程仓库地址>本地仓库管理远程仓库,并且在本地可以通过orgin来标识, <远程仓库地址>可以是ssh协议地址或是http协议地址
git remote -vv查看本地仓库关联的远程仓库地址信息
git push origin 分支名称将本地仓库的文件推送到远程仓库,-u表示将本地仓库与远程仓库进行管理,仅在第一push时使用,-f表示强推,orgin在这里的代表的含义要明确,分支名称,就是我们提交的数据是推送到远程仓库的具体分支上
当本地git文件信息与远程仓库文件冲突时的两种解决方案:
强推
本地同步远程仓库数据,本地解决再push
实际中推荐第二种-
git clone复制远程仓库的文件到本地目录中
上一节:Git本地相关操作(二)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。