Git系列四之在本地服务器搭建gitlab仓库管理(centeros环境下)
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 reload firewalld
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
   1.gitlab-ctl reconfigure
2.浏览到主机名和登录Browse to the hostname and login 
       3.首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面. 
       4.默认的管理员账号是root,如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名.
5.创建key

[root@git-node1 demo]# 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 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:
48:94:9a:65:cd:0f:f3:17:c6:dc:3c:28:0a:bb:47:98 root@git-node1
The key's randomart image is:
+--[ RSA 2048]----+
| .+ o + |
| .= = . * + |
| =.= * o . . |
| o.E.o o . |
| .oS . |
| . . |
| . |
| |
| |

6.复制id_rsa.pub公钥
| 1 2 | [root@git-node1 demo]# cat ~/.ssh/id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyVSAhs+ZBTEwv5nMwyoordV4VBy+DoCyGBJcjqkcfagRyyGUZvS57T4rhgSpz2csMTtxBXAyo0vJltxPr8McsZmcDZ8+t5qr22h9wHULFs5uB5/uZ6CDomm<br>/rVtJjiT2l1Uzh14De1CJDbNRPTCbxvcD5Mi7Ko29epymdt8agYqV2+ROynYaSjqcKxuo6pXD/cGskO7JTOkek2wxmTFOxFQR/Ec1LtVk8ilcesENzMdeU4Nwr2lec6Lr++qKXQuO7a3vB4958Hfhh1JlRI<br>ShDuHBOsFChG+vJim6tl123k7jjePHxJhUORhVMpmD4pMNwN+NYv1ta3J3ZSW6v5uWxw== root@git-node1 | 
7.添加公钥至gitlab,如图1-6-1

图1-6-1添加服务器公钥
1.2添加远程仓库
1.gitlab创建仓库,进行远程同步,如图1-6-2 
图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地址
Git系列四之在本地服务器搭建gitlab仓库管理(centeros环境下)的更多相关文章
- Git系列四之在本地服务器搭建gitlab仓库管理
		1.Git仓库管理 现在本地已经创建了git仓库,又在gitlab上创建了一个git仓库,并且让这两个仓库进行远程同步,这样gitlab仓库既可以备份也可以与他人协作管理远程仓库以及根据需要推送或拉取 ... 
- Git本地服务器搭建及使用详解
		Git本地服务器搭建及使用 Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个 ... 
- GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置
		GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置 前言 此篇博客主要为Pelican在Windows平台下的配置安装所写,在此过程中主要参考资料烟雨林博客.poem_of_ ... 
- GIT 基础 &本地服务器搭建
		Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个较好的选择,本文将对此进行详 ... 
- 本地docker搭建gitlab, 并配置ldap认证
		基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下: 1. 安装Docker for Mac (参见https://docs.docker.com/docker-for ... 
- 腾讯云服务器搭建Apache/PHP/MySQL环境
		软件环境 Windows Server 2008 R2 企业版 SP1 64位 刚刚进入 Windows Server ,你会看到以下界面: 列出了服务器的基础信息和常用配置 下载 XAMPP htt ... 
- 云服务器搭建JDK+Tomcat+MySQL环境
		一.首先租赁一台云服务器(阿里云服务器或者腾讯云服务器) 其实可以在windows电脑上使用VMware workstation来安装虚拟机进行操作,毕竟云服务器低配也是很贵的.不过可以使用学生价去租 ... 
- Git本地服务器搭建
		安装编译环境,执行以下命令 [root@centos6 ~]# yum -y install curl curl-devel zlib-devel openssl-devel perl cpio ex ... 
- Solr本地服务器搭建及查询
		0.安装solr之前,确保已安装好java8, java -version 查看是否安装 1.新建本地目录solr1 并 解压两个压缩包文件 .tar.gz .tgz tomcat7 2.将CATA ... 
随机推荐
- 批处理(bat)的一些记录
			总览:https://www.jb51.net/article/151923.htm 如何判断空格与回车的输入:https://www.lmdouble.com//113311107.html 设置命 ... 
- npm install 报错 -4048
			方法1: 删除npmrc文件. 强调:不是nodejs安装目录npm模块下的那个npmrc文件,而是在C:\Users\{账户}\下的.npmrc文件. 方法2: https://www.jiansh ... 
- i春秋-第三届“百越杯”福建省高校网络空间安全大赛-Do you know upload?
			进去提示有提示文件包含漏洞 拿到源码发现这里上传验证只有MIME验证 可直接抓包改 image/gif 绕过 接下来就是这次学到的点了 菜刀连接过后怎么都找不到flag文件,但是这里找到了数据库配置文 ... 
- 图解Java数据结构之单链表
			本篇文章介绍数据结构中的单链表. 链表(Linked List)介绍 链表可分为三类: 单链表 双向链表 循环列表 下面具体分析三个链表的应用. 单链表 链表是有序的列表,它在内存中存储方式如下: 虽 ... 
- MacOS上传文件到windows ftp时链接文件不见了
			最近打包遇到了一个问题,打包完MAC的sdk包后,得到的是一个framework的文件夹,我们需要将这个framework传到ftp服务器上,另外,还要把这个文件夹下的Release文件夹里的文件替换 ... 
- [原创]Appium与Appium desktop的区别
			1.两者都属于Appium 服务端 2.二者最新版本如下:地址:https://github.com/appium/appium-desktop/releases Appium 服务端支持的:地址:h ... 
- django rest framework 过滤 lim分页
			一.过滤 1.首先引用diango 自带的过滤配置 2.导入模块 from django_filters.rest_framework import DjangoFilterBackend from ... 
- echo和printf打印输出
			[root@node2 scprits]# echo Hello World! Hello World! [root@node2 scprits]# echo 'Hello World!' Hello ... 
- 使用Windows api 获得系统时间并生成文件夹
			// 使用window api 获得系统时间 // 生成 #include "stdafx.h" #include <Windows.h> #include <d ... 
- ETA:
			Route-based models - Simple Additive Model- Data-driven Model Path-free models - MURAT Model Chun-Hs ... 
