设为首页 收藏本站
查看: 2080|回复: 0

[经验分享] Git系列三之仓库管理

[复制链接]

尚未签到

发表于 2018-9-17 06:43:03 | 显示全部楼层 |阅读模式
  笔者Q:552408925、572891887
  架构师群:471443208
  bjstack运维社区:524721466

1.Git仓库管理
  现在本地已经创建了git仓库,又在gitlab上创建了一个git仓库,并且让这两个仓库进行远程同步,这样gitlab仓库既可以备份也可以与他人协作管理远程仓库以及根据需要推送或拉取数据。
  管理远程仓库包括了如何添加远程仓库、移除无用远程仓库、查看远程仓库、修改远程仓库等等。

1.1部署开源仓库
  GitLab 是一个用于仓库管理系统的开源项目。
  1.安装配置gitlab依赖项
  如想使用Postfix来发送邮件,在安装期间请选择’Internet Site’. 您也可以用sendmai或者 配置SMTP服务并使用SMTP发送邮件.在 Centos7系统上, 下面的命令将在系统防火墙里面开放HTTP和SSH端口.
  

[root@git-node1 ~]# yum install curl openssh-server postfix  
[root@git-node1 ~]# systemctl enable sshd postfix
  
[root@git-node1 ~]# systemctl start sshd postfix
  
[root@git-node1 ~]# firewall-cmd --permanent --add-service=http

  
[root@git-node1 ~]# systemctl>  

  2.添加GitLab仓库,并安装到服务器
  

[root@git-node1 ~]# curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash  
[root@git-node1 ~]# yum install gitlab-ce
  

  3.启动GitLab
  

gitlab-ctl reconfigure  

  4.浏览到主机名和登录Browse to the hostname and login
  首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面.
  默认的管理员账号是root,如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名.
  5.创建key
  

[root@git-node1 ~]# ssh-keygen //一路回车即可  
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>  
Your public key has been saved in /root/.ssh/id_rsa.pub.
  
The key fingerprint is:
  
8e:5f:ce:ea:32:d4:14:3e:7c:e0:10:8c:1a:6b:cf:7c root@git-node1
  
The key's randomart image is:
  
+--[ RSA 2048]----+
  
|     o..|
  
|  . . o o|
  
|   +   = o       |
  
|  +     * .      |
  
| . +   oSo       |
  
|    + Eo.|
  
|     o. . .|
  
|      o. +|
  
|       ++.o|
  
+-----------------+
  

  6.复制id_rsa.pub公钥
  

[root@git-node1 ~]# cat ~/.ssh/id_rsa.pub  
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq0Y39J2ZNjk2DG55o2ok9f2NgvM75MapmOcN0PLwb6vjPVZczHKYE968D9E1hLaH7y4IaW6pp6KSebBL/fg3bEHGvaaWfdgfQ2ccI8V045cn5WnkS81VxeHd8F9Tnz9xvAAZhXUc6HaArllXtn/pX5EGn1I/UUdTnQdQPNyWjBnPq04x8vtQvQn1C2KKyaxdwWzY+dmmfbveBqwY4+A/5rZV+qdUblN0SVxYgdgXzzg51bNKJr8mRaKgSUIdZylVFLlg9vnGL1VRxvINxxd51FNV+O51bUEbjVEr0LNlhcHqGUli4bIJ09ZuWs8p3PJtmQc9YIKyPIjSZD7ih9DX9 root@git-node1
  

  7.添加公钥至gitlab,如图1-6-1
DSC0000.png

  图1-6-1添加服务器公钥

1.2添加远程仓库
  1.gitlab创建仓库,进行远程同步,如图1-6-2
DSC0001.png

  图1-6-2gitlab创建远程仓库
  2.使用git remote 添加远程仓库地址,选择SSH方式克隆。
  

[root@git-node1 ~]# cd demo/  //必须是git init 初始化仓库目录  
[root@git-node1 demo]# git remote add origin git@git-node1:root/git_demo.gitxxx
  

1.3修改远程仓库
  由于刚开始添加的远程仓库写错了url,现在通过如下命令进行url修改
  

[root@git-node1 demo]# git remote set-url origin git@git-node1:root/git_demo.git  

1.4查看远程仓库
  如果已经配置了远程仓库服务器,可以运行 git remote命令。它会列出你指定每一个远程服务器的简写。
  

[root@git-node1 demo]# git remote  
origin
  

  也可以指定-v选项,会显示需要读写远程仓库git保存简写名称以及对应的URL地址。
  

[root@git-node1 demo]# git remote -v  
origin      git@git-node1:root/git_demo.git (fetch)
  
origin      git@git-node1:root/git_demo.git (push)
  

1.5推送远程仓库
  将本地库更新内容推送至远程,用git push命令,实际上是将当前分支推送至远程仓库。
  由于远程库是新建立空的,我们在第一次推送时候,git默认是不会把本地master关联至远端的master,所以我们需要加上-u参数,这样git不但会把本地的master分支内容推送至远程仓库的master分支,并且还会将本地的master分支和远程master分支关联起来。在以后推送或者拉取时就可以简化命令。
  

[root@git-node1 demo]# git push -u origin master  
Counting objects: 5, done.
  
Compressing objects: 100% (2/2), done.
  
Writing objects: 100% (5/5), 432 bytes | 0 bytes/s, done.
  
Total 5 (delta 0), reused 0 (delta 0)
  
To git@git-node1:root/git_demo.git
  
* [new branch]      master -> master
  
分支 master 设置为跟踪来自 origin 的远程分支 master。
  

  如果推送冲突可以选择—force强行推送
  

[root@git-node1 xuliangwei]# git push origin --force  
如果一次都没有推送数据,可以选择—all一次全部推送至远程服务器
  
[root@git-node1 xuliangwei]# git push origin --all
  

1.6克隆远程仓库
  如果现在仓库已经有开发好的项目,需要加入进来开发,可以先clone整个项目。
  

[root@git-node1 tmp]# git clone git@git-node1:root/git_demo.git  
正克隆到 'git_demo'...
  
remote: Counting objects: 5, done.
  
remote: Compressing objects: 100% (2/2), done.
  
remote: Total 5 (delta 0), reused 0 (delta 0)
  
接收对象中: 100% (5/5), done.
  

1.7拉取远程仓库
  简单的说,这个命令会访问远程仓库,从中取出你还没有的数据,或者git pull之后还是没有的数据。
  此前在添加的远程仓库的时候指定了仓库名origin,命令会自动将其添加为远程仓库并默认以origin为简写。
  所以,git fetch origin相当于从远程获取最新版本到本地,然后比较本地master分支和远程master分支差别最后进行合并。
  

[root@git-node1 demo]# git fetch origin //拉取主分支最新版本(可以拉取其他分支)  
[root@git-node1 demo]# git fetch origin dev //获取dev分支最新数据
  

  拉取数据,在生产环境中见到比较多的还是git pull相当于是从远程获取最新版本并merge到本地
  

[root@git-node1 xuliangwei]# git pull origin master #拉取主分支最新版本(可以拉取其他分支)  
[root@git-node1 xuliangwei]# git pull origin dev  //获取dev分支最新数据
  

  上述命令其实相当于git fetch 和 git merge在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并
  1.6.8更改远程仓库
  如果想重新命名一个远程仓库名称。将test重命名为rainbow,可以通过git remote rename进行修改。
  注意:这同时会修改你的远程分支名字。之前引用test/master的现在会引用rainbow/master
  1.添加新远程分支,并赋予test为远程仓库名称
  

[root@git-node1 git_demo]# git remote add test git@git-node1:root/git_demo.git  
[root@git-node1 git_demo]# git remote -v
  
origin      git@git-node1:root/git_demo.git (fetch)
  
origin      git@git-node1:root/git_demo.git (push)
  
test        git@git-node1:root/git_demo.git (fetch)
  
test        git@git-node1:root/git_demo.git (push)
  

  2.修改test名称为rainbow名称
  

[root@git-node1 git_demo]# git remote rename test rainbow  
[root@git-node1 git_demo]# git remote -v
  
origin      git@git-node1:root/git_demo.git (fetch)
  
origin      git@git-node1:root/git_demo.git (push)
  
rainbow     git@git-node1:root/git_demo.git (fetch)
  
rainbow     git@git-node1:root/git_demo.git (push)
  

1.9移除远程仓库
  因为一些变动不再使用一些特定的镜像,可以通过git remote remove 远程仓库名称,移除远程仓库
  1.查看远程仓库
  

[root@git-node1 git_demo]# git remote -v  
origin      git@git-node1:root/git_demo.git (fetch)
  
origin      git@git-node1:root/git_demo.git (push)
  
rainbow     git@git-node1:root/git_demo.git (fetch)
  
rainbow     git@git-node1:root/git_demo.git (push)
  

  2.移除不再使用的rainbow远程仓库
  

[root@git-node1 git_demo]# git remote remove rainbow  
[root@git-node1 git_demo]# git remote -v
  
origin      git@git-node1:root/git_demo.git (fetch)
  
origin      git@git-node1:root/git_demo.git (push)
  

1.10Git远程仓库小结
  要添加一个仓库,首先必须知道仓库的地址,然后使用git remote add 命令添加远程仓库,也可使用git clone命令克隆。(Git支持多种协议,包括http、https,但通过ssh支持的原生git协议速度最佳。)
  要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git,关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
  

# git remote add [remote] [url]#添加(关联)远程库  
# git remote  set-url  [remote] [url] #修改远程仓库
  
# git clone [url] #克隆远程仓库项目
  
# git remote #查看指定远程仓库命名简写
  
# git remote –v #查看远程仓库详细信息以及名称对应URL
  
# git push -u remote master #第一次推送master分支的所有内容
  
# git fetch remote [branch/tag] #下载远程仓库的所有变动
  
# git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
  
# git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
  
# git push remote [branch/tag] --all #推送所有分支到远程仓库
  
# git remote rename [oldname] [newname] #修改远程仓库名称
  
# git remote remove [name] #删除远程仓库名称以及URL地址
  

  笔者Q:552408925、572891887
  架构师群:471443208
  bjstack运维社区:524721466



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-587984-1-1.html 上篇帖子: Git系列二之数据管理 下篇帖子: Git系列四之分支管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表