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

[经验分享] GitLab版本管理工具

[复制链接]

尚未签到

发表于 2018-1-10 19:11:32 | 显示全部楼层 |阅读模式
第1章 GitLab管理

1.1 版本控制系统
  版本控制系统(version control system)是记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制,广泛应用的如svn,git等

1.2 常见版本管理工具

1.2.1 SVN
  集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件


1.2.2 Git
  分布式的版本控制系统,在每个使用者电脑上就有完整的数据仓库,没有网络依然可以使用。为了习惯及团队协作,会将本地数据同步到Git服务器或GitHub等代码仓库


第2章 Git软件安装

2.1 配置安装GIT
  Git是分布式的版本控制系统,我们只要有一个原始Git版本仓库,就能让其他主机克隆这个原始版本仓库,从而使一个Git版本仓库可以被同时分布到不同主机上,并且每台主机的版本库都是一样的,没有主次之分
  这极大的保证了数据安全性,并使得用户能够自主选择向Git服务器推送文件
  官网:https://git-scm.com

2.1.1 准备环境
  

1 [iyunv@gitlab ~]# rpm -qa centos-release  

2 centos-release-7-4.1708.el7.centos.x86_64  

3 [iyunv@gitlab ~]# uname -a  

4 Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux  

5 [iyunv@gitlab ~]# getenforce  

6 Disabled  

7 [iyunv@gitlab ~]# systemctl status firewalld.service  

8 ● firewalld.service - firewalld - dynamic firewall daemon  

9    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)  

10    Active: inactive (dead)  

11      Docs: man:firewalld(1)  


2.1.2 安装查看git
  1 [iyunv@gitlab ~]# rpm -qa git # Centos系统自带git软件,故无需安装 2 git-1.8.3.1-11.el7.x86_64 3 4 yum install -y git #没有则进行安装

2.2 初次运行Git前的配置

2.2.1 Git全局配置
  

1 git config --global user.name "banana"   #配置git使用用户  

2 git config --global user.email "XXXX@XX.com"   #配置git使用邮箱  

3 git config --global color.ui true   #语法高亮,显示加颜色  

4 git config --list   #查看全局配置  


2.2.2 查看配置文件
  

1 [iyunv@gitlab ~]# cat .gitconfig   #上述操作即对配置文件进行的编辑  

2 [user]  

3        name = banana  

4        email = XXXX@XX.com  

5 [color]  

6        ui = true  


第3章 GitLab使用

3.1 初始化工作目录
  用来存放所有笔记代码等,其中目录下具备隐藏目录,存放历史记录和备份(密文存在)
  

1 mkdir git_data   #创建并进入本地工作目录  

2 cd git_data/  
3 git init   #初始化工作目录
  

  

1 [iyunv@gitlab git_data]# git status   #查看git工作区的状态信息  

2 # On branch master   ->当前处于主分支  

3 # Initial commit   ->最初的提交  

4 nothing to commit (create/copy files and use "git add" to track)   ->无文件要提交  


3.2 创建/提交数据文件
  01.创建文件
  1 touch README
  02.查看git状态
  

1 [iyunv@gitlab git_data]# git status  

2 # On branch master   ->位于分支 master  

3 # Untracked files:   ->未跟踪的文件  

4 # (use "git add <file>..." to include in what will be committed) ->使用"git add <file>."以包含要提交的内容  

5 #     README  

6 nothing added to commit but untracked files present (use "git add" to track)   ->提交为空,但是存在尚未跟踪的文件(使用"git add"建立跟踪) 注意:git默认不提交空目录  

  03.添加到暂存区域[add后接*/file]
  1 git add README
  04.提交暂存区域文件至git本地仓库
  

1 git commit -m 'first commit'  
2 # -m后接注释信息,内容关于本次提交的说明,方便自己或他人查看
  

  04.1简便方法
  

1 git commit -a -m "注释信息"  
2 #若不加-m添加说明信息,后面会自动进入编辑模式,仍需添加说明的信息。
  
3 #-a表示直接添加文件(即本地仓库的原有文件后来经过改变时,我们就可以使用-a直接在仓库里面进行修改)
  

  05.再次查看git状态
  1 [iyunv@gitlab git_data]# git status 2 # On branch master ->位于分支master 3 nothing to commit, working directory clean ->无文件要提交,干净的工作区

3.2.1 查看目录内容
  

1 [iyunv@gitlab git_data]# tree .git/   #存储所有历史版本信息即配置文件,是通过git init生成的目录  

2 .git/  
3 ├── branches
  
4 ├── config
  
5 ├── description
  
6 ├── HEAD
  
7 ├── hooks
  
8 │   ├── applypatch-msg.sample
  
9 │   ├── commit-msg.sample
  
10 │   ├── post-update.sample
  
11 │   ├── pre-applypatch.sample
  
12 │   ├── pre-commit.sample
  
13 │   ├── prepare-commit-msg.sample
  
14 │   ├── pre-push.sample
  
15 │   ├── pre-rebase.sample
  
16 │   └── update.sample
  
17 ├── index
  
18 ├── info
  
19 │   └── exclude
  
20 ├── objects
  
21 │   ├── e6
  
22 │   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391   #服务器只存储加密文件信息
  
23 │   ├── info
  
24 │   └── pack
  
25 └── refs
  
26     ├── heads
  
27 └── tags
  

  总结提交数据/文件分为两步骤三区域:
  在工作目录git_data创建"README"数据文件;使用git add将文件提交到暂存区域(临时存放可撤销操作);将暂存区域的文件统一提交到Git仓库中

3.2.2 工作原理
  我们可以简单的把工作目录理解成是一个被Git服务程序管理的目录,Git会时刻追踪目录内文件的改动。在安装好Git服务程序后,默认就会创建一个master分支,可供我们直接提交数据

3.3 暂存区数据操作

3.3.1 git删除数据
  01. 未添加到暂存区的数据->直接使用rm命令删除即可
  02.已添加到暂存区的数据
  1 git rm --cached database 2 #将文件从git暂存区域的追踪列表移除,并不删除当前工作目录内的数据文件->只删除缓存 3 git rm -f database 4 #将文件数据从git暂存区和工作目录一起删除->永久删除

3.3.2 git重命名数据
  01.未添加到暂存区的数据->直接mv/rename改名即可
  02.已添加到暂存区数据
  1 git mv README NOTICE # README修改前/NOTICE修改后;最后进行提交git仓库 2 注意:也可mv修改名称→删除git仓库的文件快照git rm '*.txt'→将新的文件添加进去→提交git仓库

3.4 历史记录数据

3.4.1 查看历史记录
  

1 git log   #查看提交历史记录  

2 git log -2   #查看最近几条记录  

3 git log -p -1   #-p显示每次提交的内容差异,例如仅查看最近一次差异  

4 git log --stat -2   #--stat简要显示数据增改行数(能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息)  

5 git log --pretty=oneline   #--pretty根据不同的格式展示提交的历史信息  

6 git log --pretty=fuller -2   #以更详细的模式输出提交的历史记录  

7 git log --pretty=fomat:"%h %cn"   #查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名  

  使用format参数来指定具体的输出格式
  

1 %s     提交说明  

2 %cd    提交日期  

3 %an    作者的名字  

4 %cn    提交者的姓名  

5 %ce    提交者的电子邮件  

6 %H    提交对象的完整SHA-1哈希字串  

7 %h    提交对象的简短SHA-1哈希字串  

8 %T    树对象的完整SHA-1哈希字串  

9 %t     树对象的简短SHA-1哈希字串  

10 %P    父对象的完整SHA-1哈希字串  

11 %p    父对象的简短SHA-1哈希字串  

12 %ad    作者的修订时间  


3.4.2 还原历史记录
  Git服务程序中有一个版本指针HEAD,当用户申请还原数据时,将HEAD指针指向到某个特定的提交版本。但Git为避免历史记录冲突用SHA-1算出十六进制的哈希字串来区分提交版本。默认HEAD指针会指向到最近一次提交记录,上一个提交版本即HEAD^,上上一个版本即HEAD^^ (HEAD~5简化表示往上数第五个提交版本)
  1 git reset --hard HEAD^ #还原历史提交版本上一次 2 git reset --hard 3de15d4 #找到历史还原点的SHA-1值后,就可以还原(值未写全时系统会自动匹配)

3.4.3 还原未来数据
  即还原到历史数据后想再次撤销更改,但是git log已经找不到这个版本了
  1 git reflog #查看未来历史更新点

3.4.4 标签使用(于commit之后)
  

1 git tag v1.0     #当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag  

2 git tag          #查看当前所有的标签  

3 git show v1.0   #查看当前1.0版本的详细信息  

4 git tag v1.2 -m "version 1.2>
5 #对当前版本(最新)打标记,用于commit提交之后接着进行打标记(-a指定标签名,-m为说明信息)  
6 git tag -d v1.0    #我们为同一个提交版本设置了两次标签,删除之前的v1.0
  

  

1 [iyunv@gitlab git_data]# git reset --hard 0bdf2e7  

2 HEAD is now at 0bdf2e7 modified README file  

3 [iyunv@gitlab git_data]# git reset --hard V20171130  

4 HEAD is now at a66370a add oldboy dir  


3.5 分支管理
  在实际的项目开发中尽量保证master分支稳定,仅用于发布新版本,平时不要直接修改里面的数据文件。而开发都在dev分支进行修改,即每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后合并到master分支

3.5.1 创建分支
  

1 git branch linux   #创建分支  

2 git branch        #查看分支情况,当前分支前有*号  

3 git checkout linux  #Switched to branch 'linux' 切换分支  

4 git checkout --<file>  #一键还原,直接将git仓库的文件覆盖当前文件[危险]  


3.5.2 合并分支(自动合并)
  需求:把linux的工作成果合并到master分支上
  1 git checkout master #切换到master分支 2 git merge linux #合并Linux分支至master 3 git branch -d linux #确认合并完成后,建议删除分支
  注意:系统默认不编辑空分支

3.5.3 合并冲突模拟(手动合并)
  注意:只有同目录同文件同行才会造成合并冲突的情况,只要有一点不同就能够进行合并
  01.准备:
  

1 cd git_data  

2 echo 'master code' >>README  

3 git commit -a -m 'this master branch commit'  
4 git checkout linux
  
5 cat README
  
6
  
7 echo 'linux code' >>README
  
8 git commit -a -m 'this linux branch second commit'
  
9 git checkout master
  

  02.现象:
  

1 [iyunv@gitlab git_data]# git merge linux  

2 Auto-merging README   ->自动合并 README  

3 CONFLICT (content):Merge conflict in README   ->冲突(内容):合并冲突于 READM  

4 Automatic merge failed; fix conflicts and then commit the result.  

5 ->自动合并失败;修正冲突然后提交修正的结果  

  03.解决:人工选择想要的内容,同时修改master和linux分支同文件并提交,最后merge
  

1 [iyunv@gitlab git_data]# vim README  

2 this is linux branch hello world  

3 master code  

4 linux code  

5 [iyunv@gitlab git_data]# git commit -a -m '解决合并冲突'  
6 [master 19cb918] 解决合并冲突
  
7 [iyunv@gitlab git_data]# git merge linux
  
8 Already up-to-date.
  


3.6 删除分支
  由于之前已合并了linux分支,故现在看到它在列表中,在这个列表中分支名字前没*号的分支通常可用git branch -d删除且不会失去任何东西
  

1 [iyunv@gitlab git_data]# git branch --no-merged   #查看所有包含未合并工作的分支  

2   testing  

3 [iyunv@gitlab git_data]# git branch -d testing   ->删除分支  

4 error: The branch 'testing' is not fully merged.   ->分支'testing'未进行合并  

5 If you are sure you want to delete it, run 'git branch -D testing'.   ->若确定想删除它,即使用-D强制删除  


第4章 客户端安装软件
  1 软件下载地址https://github.com/git-for-windows/git/releases/tag/v2.10.0.windows.1/Git-2.10.0-64-bit.exe

4.1 windows上安装Git
  用于直接管理windows。安装方法默认下一步→桌面右键"Git Bash Here"→命令行
  

1 shine@shine MINGW64 ~/Desktop  

2 $ pwd  

3 /c/Users/shine/Desktop  

4 shine@shine MINGW64 ~/Desktop  

5 $ mkdir git_data  

6 shine@shine MINGW64 ~/Desktop  

7 $ cd git_data  

8 shine@shine MINGW64 ~/Desktop/git_data  

9 $ git init  

10 Initialized empty Git repository in C:/Users/shine/Desktop/git_data/.git/  

  01.桌面右键"Git Gui Here"→"打开文件"

  02.定义仓库的路径"git_data"→添加用户信息(如下)
  

1 shine@shine MINGW64 ~/Desktop/git_data  

2 $ git config  --global user.email "XXXXX@XX.com"  
3 shine@shine MINGW64 ~/Desktop/git_data
  
4 $ git config  --global user.name "banana"
  

  03.软件使用
  至此,Git的安装使用完成

4.2 linux上安装GitLab
  交互数据:
  · 使用GitHub或者码云等公共代码仓库
  · 使用GitLab私有仓库
  1 官方安装文档 https://about.gitlab.com/installation/ 2 国内软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
  

1 mkdir -p /application/tools  

2 cd /application/tools  

3 rz -E   #上传gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm  

4  
5 yum localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm
  
6 gitlab-ctl reconfigure   #初始化,仅执行一次
  
7 注意:gitlab默认开机自启,无需修改;开机不自启会导致软件服务无法启动
  


4.2.1 web网页测试
  1 http://10.0.0.63
  命令行测试:
  1 ps -ef 2 netstat -lntup 3 gitlab-ctl status 4 注意:软件安装默认在/opt下,其数据库为postgresql;当该机器有apache服务需手动关闭

  注意:创建密码默认即为8位,生产环境太过简单不可用;账户默认root
  提示:git本身没有任何权限控制,因为git就是为了开发者共同编辑代码而出现,如果没有权限,也会导致信息泄露,于是出现web界面

4.2.2 网页页面使用
  01.创建新项目
  说明:一个目录初始化完就是一个项目,不能再进行修改,只能进行重新创建

  02.进行网页编辑

  03.通过密钥进行认证

  1 ssh-keygen #生成密钥对(一路回车) 2 cat /root/.ssh/id_rsa.pub #查看公钥id_rsa.pub值并添加如下:

  04.连接推送测试
  

1 ssh git@10.0.0.63  
2 git clone git@10.0.0.63:root/shine.git
  
3 ls /root
  
4 #在哪个目录克隆的就默认存在于那个目录(想切换到别的目录需提前切换再git clone)
  

  

1 cd shine   #这里名称与上文相同  

2 touch README.md  

3 git add README.md  

4 git commit -m "add README"  

  

1 [iyunv@gitlab shine]# git push -u origin master   #把本地代码向远端仓库(gitlab网页)推送  

2 Counting objects: 3, done.  

3 Writing objects: 100% (3/3), 208 bytes | 0 bytes/s, done.  

4 Total 3 (delta 0), reused 0 (delta 0)  

5 To git@10.0.0.63:root/shine.git  

6  * [new branch]      master -> master  

7 Branch master set up to track remote branch master from origin.  

  刷新页面查看,即下图

  05.创建文件测试
  1 cd shine/ 2 git pull #将代码拉取到本地(需要在git的工作目录中进行操作)
  至此,GitLab的安装使用完成

4.3 安装GitHub托管服务
  Github是Git版本库的托管服务,是目前全球最大的公网仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径。不仅可以托管各种Git版本仓库,还拥有更美观的Web界面。代码可被任何人克隆,使开发者为开源项贡献代码变得容易
  01.注册GitHub
  1 浏览器访问github官网https://github.com/

  02.填写个人用户名等信息→默认下一步→跳过描述
  03.创建项目

  说明:创建新的项目之前要现验证邮箱
  04.添加git服务器上生成的公钥id_rsa.pub
  1 [iyunv@gitlab ~]# cat .ssh/id_rsa.pub

  05.准备工作已经完毕→创建一个新的仓库

  06.根据以下信息创建代码仓库→推送测试

  

1 mkdir -p banana  

2 cd banana/  
3 echo "# test" >> README.md
  
4 git init
  
5 git add README.md
  
6 git commit -m "first commit"
  
7 git remote add origin git@github.com:banana-tong/test.git
  

  推送测试
  

1 [iyunv@gitlab banana]# git push -u origin master  

2 The authenticity of host 'github.com (192.30.255.113)' can't be established.  
3 RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
  
4 RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
  
5 Are you sure you want to continue connecting (yes/no)? yes
  
6 Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
  
7 Counting objects: 3, done.
  
8 Writing objects: 100% (3/3), 209 bytes | 0 bytes/s, done.
  
9 Total 3 (delta 0), reused 0 (delta 0)
  
10 To git@github.com:banana-tong/test.git
  
11  * [new branch]      master -> master
  
12 Branch master set up to track remote branch master from origin.
  

  07.刷新界面即可以发现推送上去的README.md文件

  08.此时可创建新文件→命令行git pull拉取进行测试
  至此,GitHub的安装使用完成

第5章 有关Git常用命令
  

1 add        #添加文件内容至索引  

2 branch     #列出、创建或删除分支  

3 checkout   #检出一个分支或路径到工作区  

4 clone      #克隆一个版本库到一个新目录  

5 commit    #记录变更到版本库  

6 init        #创建一个空的 Git 版本库或重新初始化一个已存在的版本库  

7 log        #显示提交日志  

8 merge     #合并两个或更多开发历史  

9 mv        #移动或重命名一个文件、目录或符号链接  

10 pull       #获取并合并另外的版本库或一个本地分支  

11 push      #更新远程引用和相关的对象  

12 rm        #从工作区和索引中删除文件  

13 show     #显示各种类型的对象  

14 status     #显示工作区状态  

15 tag       #创建、列出、删除或校验一个GPG签名的 tag 对象  

  下节想跟大家一同探讨一下有关代码上线问题,如有不妥望海涵
  此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/
  此处感谢神奇海螺为本文章提供的声明

运维网声明 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-433661-1-1.html 上篇帖子: Gitlab管理下本地Git配置 下篇帖子: gitlab多人协作开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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