zoukankan      html  css  js  c++  java
  • Gitlab仓库管理 把本地仓库推送到gitlab 克隆仓库

    把本地的仓库推送到远程仓库 gitlab上

    实现gitlab和本地之间进行推送仓库,首先要做ssh认证

    配置 SSHKEY

    前面我们已经在 GitLab 创建了仓库,并且授权用户可以使用仓库,我们所有的操作都是在 WEB 页面进行,下在我们介绍如何使用客户端来连接我们的仓库。

    我们的仓库是私有的,只有授权的用户才可以访问到该仓库,那么只要将客户端的用户与我们 GitLab 的用户绑定,客户端即可访问到 GitLab 上的仓库,

    我们建议使用 SSH 方式实现客户端与 Gitlab 用户的绑定,具体配置如下:


    在客户端生成 ssh 密钥对(注 windows 客户端下只能使用 rsa 加密方式):

    我们在本地客户端生成公钥,把公钥配到对应的gitlab用户的ssh key上

    [root@ci-node1 ~]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:dKgV7ndo1haY4XeUseN/yjj7/2AWNH1wC2GpK/fLfuY root@ci-node1
    The key's randomart image is:
    +---[RSA 2048]----+
    |        . .  +*o.|
    |       . + +.oo=.|
    |        = = + *.o|
    |       = . = = o.|
    |      . S = = o  |
    |         = =   o |
    |          o . + o|
    |            o* =.|
    |            +BOE+|
    +----[SHA256]-----+
    [root@ci-node1 ~]# ll .ssh/
    total 8
    -rw------- 1 root root 1679 Mar 29 17:55 id_rsa
    -rw-r--r-- 1 root root  395 Mar 29 17:55 id_rsa.pub
    [root@ci-node1 ~]# cat .ssh/id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCstYVepXE4/B85nKNU6gaVpPsjGXu6Ql2sKRgRDxsHGmuZVg+q0GD3c0Ml2XkzozswTRuKCcIhZjK/DEGbbgsBEH8q6HHrWCP6vAWb+7wIEvhtJVm6+5zOGA/AorFczEgnm9b2ekPkwAMV7qrOQ1KG9S94U+XRwAtjgNV0MuYx5S0liBr9KBEt8pQ7Fd2TMo95rF3328gGnWLZJWmETjtJaWpLKDgWnQ7BdlK89o6eyYBtdKJfZ5uYM3tgeX8GiRA+daR8fpEruOSpjuvRbyjRStf5ZXPIemL46lXcEDYurnQ4Uucv5F+paqTWnzYHziQOoKd3Jnxgqsh24TZeoEDP root@ci-node1

    我们将该用户与 GitLab 的 root 用户绑定,复制用户的公钥,在 GitLab 主页面点击用户设置

    进入到用户设置页面,点击左侧菜单栏的 SSH KEYS

    进入到 SSH KEYS 管理页面

     

    此处只能添加公钥,如果添加私钥系统将报错,此外一个公钥在整个 GitLab 系统中只能添加一次,但是一个 GitLab 用户可以添加多个公钥。

     配置完了,本地客户端和gitlab认证完成了

    推送本地客户端仓库到 GitLab

    把git_test仓库推到远程仓库 gitlab 本地已经有git_test仓库

    首先我们要将GitLab上的git_test仓库配置为ci-node1上git_test仓库的远程仓库,

     为他配置远程仓库

    [root@ci-node1 git_test]# git remote add gitlab git@192.168.31.11:test/git_test.git
    [root@ci-node1 git_test]# git remote
    gitlab

    其次,使用 git push 命令直接推送本地仓库的 master 分支到远程仓库

    [root@ci-node1 git_test]# git push -u gitlab master
    The authenticity of host '192.168.31.11 (192.168.31.11)' can't be established.
    ECDSA key fingerprint is SHA256:Eal3aUwcGcxH1ZD9X799taSiGiCMFgAE7rnoY74f25U.
    ECDSA key fingerprint is MD5:27:41:0f:5a:4c:ba:8f:23:bd:23:44:8d:18:53:e6:30.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.31.11' (ECDSA) to the list of known hosts.
    Counting objects: 30, done.
    Compressing objects: 100% (18/18), done.
    Writing objects: 100% (30/30), 2.50 KiB | 0 bytes/s, done.
    Total 30 (delta 2), reused 0 (delta 0)
    To 192.168.31.11:test/git_test.git
     * [new branch]      master -> master
    Branch master set up to track remote branch master from gitlab.

    提示推送功能,我们在 GitLab 上的 git_test 仓库就可以看到我们推送上来的内容, 

     认证是正确的,现在实现了本地的仓库和远程gitlab的集成,能把仓库推上去

    克隆 GitLab 仓库到本地客户端

    我们要把gitlab 的仓库 克隆到另外一台机器上

    我们在另外一台机器上 ci-node2 安装git服务

    参考这个帖子  源码安装git

    https://www.cnblogs.com/mingerlcm/p/11403126.html

    安装好git后  配置git全局配置 邮箱 name

    https://www.cnblogs.com/mingerlcm/p/11403274.html

    ci-node2客户端生成ssh 公钥 做ssh认证

    [root@ci-node2 ~]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:pCb3ozG5sS3ZrnkDUsLTD5RTSule2QxE6oCcmAlzKTU root@ci-node2
    The key's randomart image is:
    +---[RSA 2048]----+
    |o.E.  .*+        |
    |oB.+ .=o.        |
    |+.+..+o..=       |
    |    +o=oo o      |
    |    .==+S        |
    |    .+oo.        |
    |     .=+o        |
    |      oX+.       |
    |      *=o.       |
    +----[SHA256]-----+

    把公钥配置到gitlab

    [root@ci-node2 ~]# ll .ssh/
    total 8
    -rw------- 1 root root 1675 Mar 29 23:39 id_rsa
    -rw-r--r-- 1 root root  395 Mar 29 23:39 id_rsa.pub

    首先,我们配置 ci-node2 客户端与 GitLab 上 dev 用户绑定,

     把ci-node2 客户端的公钥配置到 gitlab 上的dev用户绑定

    登录dev用户

     gitlab要求第一次登录dev用户需要重新修改默认密码

     把ci-node2 客户端的公钥配置到 gitlab 上的dev用户绑定

     

     现在认证已经做完了

    第二,使用 git clone 命令克隆仓库到 ci-node2 本地

    [root@ci-node2 data]# git clone git@192.168.31.11:test/git_test.git
    Cloning into 'git_test'...
    The authenticity of host '192.168.31.11 (192.168.31.11)' can't be established.
    ECDSA key fingerprint is SHA256:Eal3aUwcGcxH1ZD9X799taSiGiCMFgAE7rnoY74f25U.
    ECDSA key fingerprint is MD5:27:41:0f:5a:4c:ba:8f:23:bd:23:44:8d:18:53:e6:30.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.31.11' (ECDSA) to the list of known hosts.
    remote: Counting objects: 30, done.
    remote: Compressing objects: 100% (18/18), done.
    remote: Total 30 (delta 2), reused 0 (delta 0)
    Receiving objects: 100% (30/30), done.
    Resolving deltas: 100% (2/2), done.
    Checking connectivity... done.

    我们可以看到已经将 GitLab 上的 git_test 仓库克隆到了 ci-node2 本地,同时为本地仓库添加了一个指向 GitLab 上 git_test 仓库的远程仓库。

    执行git clone时候,会默认会仓库添加一个默认的远程仓库 就是gitlab

    [root@ci-node2 data]# ll git_test/
    total 4
    -rw-r--r-- 1 root root 21 Mar 29 23:55 a
    -rw-r--r-- 1 root root  0 Mar 29 23:55 master
    -rw-r--r-- 1 root root  0 Mar 29 23:55 test
    
    [root@ci-node2 data]# cd git_test/
    [root@ci-node2 git_test]# 
    [root@ci-node2 git_test]# git remote
    origin

     

    我们 ci-node2 的 git_test 上创建一个 dev 分支,并将 dev 分支,推送到 GitLab 上

    验证是否默认远程仓库 是否是gitlab 

    建立dev分支

    // 建立dev分支
    [root@ci-node2 git_test]# git branch dev
    // 切换到dev分支
    [root@ci-node2 git_test]# git checkout dev
    Switched to branch 'dev'

    在dev分支,创建一个文件

    [root@ci-node2 git_test]# touch dev

    提交commit,需要先配置git全局配置

    [root@ci-node2 git_test]# git add .
    [root@ci-node2 git_test]# git commit -m "commit dev on dev branch"
    [dev a0e7b8d] commit dev on dev branch
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 dev

    把dev分支推到gitlab

    [root@ci-node2 git_test]# git status
    On branch dev
    nothing to commit, working tree clean
    
    
    [root@ci-node2 git_test]# git push -u origin dev
    Counting objects: 2, done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 227 bytes | 0 bytes/s, done.
    Total 2 (delta 1), reused 0 (delta 0)
    remote: 
    remote: To create a merge request for dev, visit:
    remote:   http://192.168.31.11/test/git_test/merge_requests/new?merge_request%5Bsource_branch%5D=dev
    remote: 
    To 192.168.31.11:test/git_test.git
     * [new branch]      dev -> dev
    Branch dev set up to track remote branch dev from origin.

    完成后,我们在 GitLab 上可以看到我们刚推上来的 dev 分支

     

  • 相关阅读:
    微软算法100题25 查找连续最长的数字串
    微软算法100题24 就地逆序单链表
    微软算法100题21 数列中所有和为特定值的组合
    微软算法100题20 字符串转整数 atoi
    约瑟夫环
    微软算法100题17 字符串中找到第一个只出现一次的字符
    微软算法100题16 按层遍历二叉树
    微软算法100题15 求二元查找树的镜像
    微软算法100题14 在排序数组中找到和为指定数的任意两个元素
    NLP(十) 主题识别
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/12593873.html
Copyright © 2011-2022 走看看