Git连接远端仓库

1,116 阅读5分钟

我们接着学习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基于本地仓库与远程仓库交互的,相关操作


一.关联远程仓库

1. 生成密钥

为了保证远程仓库能够唯一识别一电脑主机的操作,同时保证我们与远程仓库通信的安全,我们需要创建一个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<hr>

2. 在远程仓库进行注册

笔者使用的是开源中国提供的git服务,大家也可以选择其他的,其操作大同小异。将“id_rsa.pub”公钥中的内容复制 出来添加到远程的git服务中去,具体操作如下图所示:

远程仓库设置信息
远程仓库注册完成

3. 创建远程仓库

创建远程仓库

4. 关联远程仓库

在远程仓库获取http协议的连接或是ssh协议的连接地址,如图:

然后在本地仓库进行关联,使用“git remote add origin <远程仓库地址>”,如图的具体操作:
在本地使用git命令关联
git remote -vv”用来查看本地仓库关联远程仓库地址

5. 推送文件到远程仓库

目前本地仓库是有文件的,但是远程仓库是空的,我们需要将本地仓库的文件推送到远程仓库上,这样其他人才能从远程仓库获取到文件进行编辑和修改,实现协同工作的目的。
执行"git push -u origin master"命令,如图:

将本地文件信息推送到远程仓库
这张图内容比较多,我们一个一个来说:
首先,git push是将本地仓库的数据push到远程仓库,-u的作用是本地仓库第一次向远程仓库推送数据时简历关联,origin是指我们在执行“git remote add origin [远程仓库地址]"以后orgin就代表了远程仓库,而master则是值远程仓库的分支名称,目前远程仓库的分支只有一个默认分支master
然后,我们执行"git push -u origin master"会有一些朋友出现上图上半部分展示的错误信息,我查了相关资料,意思就是说我们在新建远程仓库以后,远程仓库会默认创建一些文件,而这些文件本地仓库没有的,这就藏成了。本地仓库和远程仓库都有彼此没有的文件,解决这种状况有两种方案:

  1. 强推覆盖远程仓库已有的文件
  2. 本地仓库拉取远程仓库的文件,本地实现合并然后再push

本文为了省事使用了第一种方案,实际开发过程中推荐第二种方案,相关文章链接:my.oschina.net/uniquejava/…


6. 提交编辑到远程仓库

在第5小节的时候,我们已经将本地仓库与远程仓库的数据实现同步,下面我们在本地修改一下文件然后再把修改的内容提交到远程仓库。

提交修改的内容到git远程仓库
提交之前要修改的文件的内容
提交之后修改的文件的内容显示
基于之前已经与远程仓库建立了关联,所以这次同步只需要执行"git push"命令即可

7.从远程仓库复制

通过“git clone <ssh地址或htttps地址或http地址>”来下载远程仓库中的文件到本地,我们继续使用之前的远程仓库,在本地换个目录就可以创建一个新的本地仓库,且两个仓库之间互不影响。如图,我们到远程git获取远程仓库的地址:

git从远程仓库复制

到本地执行"git clone"命令下载代码:
git在本地复制远程仓库命令
如图代码已经下载到本地,我们可以通过之前学到命令来看下一下相关的信息,如图:
本地查看复制远程仓库后的信息

二.总结

1. ssh key

是git远程仓库唯一区分本地仓库主机的标识也是安全通信的保证

2. git remote add origin [远程仓库地址]

本地仓库管理远程仓库,并且在本地可以通过orgin来标识, **[远程仓库地址]**可以是ssh协议地址或是http协议地址

3. git remote -vv

查看本地仓库关联的远程仓库地址信息

4. git push origin

分支名称将本地仓库的文件推送到远程仓库,-u表示将本地仓库与远程仓库进行管理,仅在第一push时使用,-f表示强推,orgin在这里的代表的含义要明确,分支名称,就是我们提交的数据是推送到远程仓库的具体分支上

5. 当本地git文件信息与远程仓库文件冲突时的两种解决方案:

  1. 强推
  2. 本地同步远程仓库数据,本地解决再push

实际中推荐第二种

6. git clone复制远程仓库的文件到本地目录中

上一节:Git本地相关操作(二)