Git使用总结四:远程仓库


使用git branch dev创建本地仓库分支dev,我们平时在dev分支上工作,而master作为主分支,我们不动它。在合并到master分支前,不管在dev分支上如何操作,都不会影响到主分支。当dev分支合并到master分支,我们删除dev分支,准备推送到远程仓库。在推送到远程仓库前,通过上篇版本穿梭的有效命令行,可以进行版本切换回退、撤销修改、删除文件等操作,从而避免文件丢失的问题

Git使用总结四:远程仓库_第1张图片

GitHub

通过SSH加密本地Git仓库和GitHub仓库之间的传输:

  • 创建SSH Key
$ ssh-keygen -t rsa -C "[email protected]"
  • 在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个文件是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥
  • 登录GitHub,添加SSH Key,在Key文本框里粘贴id_rsa.pub文件里的内容

GitLab

GitLab作为Git服务端部署在公司一台闲置电脑上,类似于服务器,用于托管公司研发项目。

SSH

SSH,是一个加密验证连接的方式,很多远程连接操作使用SSH。SSH和https比,更加安全,使用Git协议速度更快。

生成SSH秘钥

  • 未使用使用生成过SSH秘钥
ssh-keygen -t rsa -C "[email protected]"
  • 找到.ssh目录下的两个文件,分别是id_rsaid_rsa.pub
id_rsa
id_rsa.pub
  • 如果有过关联其他服务器的SSH密钥,且需要同当前GitLab隔离
ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/gitlab
  • 最后的“gitlab”即为自定义的SSH文件名,然后再.ssh文件夹中创建config文件,在其中输入
gitlab (如果邮箱不同也可在此处注释)
Host gitlab.com
HostName 192.168.2.156
User git
IdentityFile ~/.ssh/gitlab
  • 对于原SSH也可以用这种方式分配路径。同时,这种方法也可以用来配置多GitHub账户。比如说同一设备同时使用GitLab和GitHub时需要在config里分配路径。

配置多GitHub账户

  • 首先找到.ssh文件,文件中包括githubgithub.pubgitlabgitlab.pubknown_hosts等文件
  • 添加config文件,对SSH分配路径,如下所示
 # gitlab
Host gitlab.com
HostName 192.168.2.156
User git
IdentityFile ~/.ssh/gitlab
 # github
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github
  • 由于192.168.2.156与gitlab.com间存在映射关系,所以需要重新关联远程仓库
  • 首先cd 文件夹
  • 然后与远程仓库取消关联
git remote rm origin 
  • 最后重新关联远程仓库
git remote add origin [email protected]:far/gitGuide.git 

GitLab中配置公钥

打开id_rsa.pub复制公钥,粘贴到GitLab中的个人资料设置/SSH密钥里面。

测试SSH连接

ssh -T [email protected]

如果配置多SSH,直接可以使用gitlab.com测试,即

ssh -T [email protected]

如果测试成功会出现

Welcome to GitLab, USERNAME!

添加远程库

本地仓库关联远程仓库

git remote add origin [email protected]:far/learngit.git

把本地仓库的内容推送到GitHub仓库

$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To [email protected]:far/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

$ git push origin master

在第一次推送到远程后,以后都用git push origin master命令,把本地master分支的最新修改推送至GitHub。

从远程库克隆

从远程库克隆一个仓库,首先要知道该远程仓库的地址,然后再使用git clone命令进行克隆。
Git支持多种协议,包括https,但是ssh支持原生的git协议速度最快。

$ git clone [email protected]:far/gitskills.git

你可能感兴趣的:(Git使用总结四:远程仓库)