美文网首页Git教程
Git使用总结四:远程仓库

Git使用总结四:远程仓库

作者: devinlaffer | 来源:发表于2017-02-27 09:26 被阅读44次

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

    GitHub

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

    • 创建SSH Key
    $ ssh-keygen -t rsa -C "youremail@example.com"
    
    • 在用户主目录里找到.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 "your_email@example.com"
    
    • 找到.ssh目录下的两个文件,分别是id_rsaid_rsa.pub
    id_rsa
    id_rsa.pub
    
    • 如果有过关联其他服务器的SSH密钥,且需要同当前GitLab隔离
    ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -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 git@gitlab.com:far/gitGuide.git 
    

    GitLab中配置公钥

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

    测试SSH连接

    ssh -T git@192.168.2.156
    

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

    ssh -T git@192.168.2.156
    

    如果测试成功会出现

    Welcome to GitLab, USERNAME!
    

    添加远程库

    本地仓库关联远程仓库

    git remote add origin git@github.com: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 git@github.com: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 git@github.com:far/gitskills.git
    

    相关文章

      网友评论

        本文标题:Git使用总结四:远程仓库

        本文链接:https://www.haomeiwen.com/subject/dltzwttx.html