zoukankan      html  css  js  c++  java
  • GitLab版本管理工具

    第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 [root@gitlab ~]# rpm -qa centos-release
     2 centos-release-7-4.1708.el7.centos.x86_64
     3 [root@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 [root@gitlab ~]# getenforce
     6 Disabled
     7 [root@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 [root@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 [root@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 [root@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 [root@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 [root@gitlab git_data]# git status 2 # On branch master ->位于分支master 3 nothing to commit, working directory clean ->无文件要提交,干净的工作区 

    3.2.1 查看目录内容

     1 [root@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 release is test"
    5 #对当前版本(最新)打标记,用于commit提交之后接着进行打标记(-a指定标签名,-m为说明信息)
    6 git tag -d v1.0    #我们为同一个提交版本设置了两次标签,删除之前的v1.0
    1 [root@gitlab git_data]# git reset --hard 0bdf2e7
    2 HEAD is now at 0bdf2e7 modified README file
    3 [root@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 [root@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 [root@gitlab git_data]# vim README
    2 this is linux branch hello world
    3 master code
    4 linux code
    5 [root@gitlab git_data]# git commit -a -m '解决合并冲突'
    6 [master 19cb918] 解决合并冲突
    7 [root@gitlab git_data]# git merge linux
    8 Already up-to-date.

    3.6 删除分支

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

    1 [root@gitlab git_data]# git branch --no-merged   #查看所有包含未合并工作的分支
    2   testing
    3 [root@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 [root@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 [root@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 [root@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/

    此处感谢神奇海螺为本文章提供的声明

  • 相关阅读:
    解决 Mac launchpad 启动台 Gitter 图标无法删除的问题
    React 与 React-Native 使用同一个 meteor 后台
    解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
    一行命令更新所有 npm 依赖包
    swift学习笔记
    IOS语言总结
    focusSNS学习笔记
    别小看锤子,老罗真的很认真
    windowsphone开发页面跳转到另一个dll中的页面
    【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来
  • 原文地址:https://www.cnblogs.com/bananaaa/p/7975598.html
Copyright © 2011-2022 走看看