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

[经验分享] Git详解与gitlab使用

[复制链接]

尚未签到

发表于 2018-9-16 11:13:09 | 显示全部楼层 |阅读模式
  gitlab
第1章 版本控制系统都能干什么?
  自动生成备份
  知道改动的地方
  随时回滚
第2章 常见的版本控制系统
2.1 git
  是一个分布式版本控制系统,在每个使用者的电脑上有一个完整的数据仓库,没有网络依然可以使用git,当然为了习惯及团队协作,会将本地数据同步到git服务器或者github等代码仓库
  常见版本管理工具:
2.2 SVN
  集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法提交或者备份文件
第3章 环境准备
3.1 git默认最小化安装的时候就已经有了
  [root@gitlab ~]# cat /etc/redhat-release

  CentOS Linux>  [root@gitlab ~]# rpm -qa git
  git-1.8.3.1-5.el7.x86_64
  [root@gitlab ~]# systemctl status firewalld.service
  ● firewalld.service - firewalld - dynamic firewall daemon
  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  Active: inactive (dead)
  [root@gitlab ~]# getenforce
  Disabled
3.2 Git全局配置:
  git config --global user.name "dy"
  git config --global user.email "15555513217@163.com"
  git config --global color.ui true
  git config –list
第4章 git常用命令
4.1 git命令常用参数汇总:
  命令
  命令说明
  add   
  添加文件内容至索引
  bisect
  通过二分查找定位引入 bug 的变更
  branch
  列出、创建或删除分支
  checkout
  检出一个分支或路径到工作区
  clone  
  克隆一个版本库到一个新目录
  commit
  记录变更到版本库
  diff   
  显示提交之间、提交和工作区之间等的差异
  fetch  
  从另外一个版本库下载对象和引用
  grep   
  输出和模式匹配的行
  init   
  创建一个空的
  Git   
  版本库或重新初始化一个已存在的版本库
  log   
  显示提交日志
  merge  
  合并两个或更多开发历史
  mv     
  移动或重命名一个文件、目录或符号链接
  pull   
  获取并合并另外的版本库或一个本地分支
  push   
  更新远程引用和相关的对象
  rebase
  本地提交转移至更新后的上游分支中
  reset  
  重置当前HEAD到指定状态
  rm     
  从工作区和索引中删除文件
  show   
  显示各种类型的对象
  status
  显示工作区状态
  tag
  创建、列出、删除或校验一个GPG签名的 tag 对象
4.2 常规操作示意图:
DSC0000.jpg

1.1 创建git数据仓库
  [root@gitlab ~]# mkdir git_data
  [root@gitlab ~]# ll
  total 4
  -rw-------. 1 root root 1347 Mar 12 11:09 anaconda-ks.cfg
  drwxr-xr-x  2 root root    6 Mar 20 20:40 git_data
1.2 初始化git目录
  [root@gitlab git_data]# git init
  Initialized empty Git repository in /root/git_data/.git/
1.3 查看git当前工作状态
  [root@gitlab git_data]# git status
  # On branch master
  #
  # Initial commit
  #
  nothing to commit (create/copy files and use "git add" to track)
1.4 创建数据-提交数据
  [root@gitlab git_data]# touch README
  [root@gitlab git_data]# ll
  total 0
  -rw-r--r-- 1 root root 0 Mar 20 20:47 README
  [root@gitlab git_data]# git status
  # On branch master
  #
  # Initial commit
  #
  # Untracked files:
  #   (use "git add ..." to include in what will be committed)
  #
  #   README
  nothing added to commit but untracked files present (use "git add" to track)
1.5 把文件上传的暂存区
  [root@gitlab git_data]# git add  README
  [root@gitlab git_data]# git status
  # On branch master
  #
  # Initial commit
  #
  # Changes to be committed:
  #   (use "git rm --cached ..." to unstage)
  #
  #   new file:   README
1.6 把暂存区的文件提交的版本库,-m是对文件的说明信息
  [root@gitlab git_data]# git commit -m 'jiangboyang'
  [master (root-commit) bb1dc0b] jiangboyang
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 README
1.7 如果修改了已经上传到仓库的文件后,可以一步上传到仓库
  说明:这里的一步上传到仓库是指已经存在仓库中的文件,修改后,支持这样的操作
  [root@gitlab git_data]# echo daya >>test
  [root@gitlab git_data]# git status
  # On branch master
  # Changes not staged for commit:
  #   (use "git add ..." to update what will be committed)
  #   (use "git checkout -- ..." to discard changes in working directory)
  #
  #   modified:   test
  #
  no changes added to commit (use "git add" and/or "git commit -a")
  [root@gitlab git_data]# git commit -a -m "xiugaiwenjian"
  [master 3bd1ed4] xiugaiwenjian
  1 file changed, 1 insertion(+)
  [root@gitlab git_data]# git status
  # On branch master
  nothing to commit, working directory clean
1.8 删除暂存区的数据
  [root@gitlab git_data]# git reset HEAD test2
  [root@gitlab git_data]# git rm --cached test
  rm 'test'
  [root@gitlab git_data]# git rm -f test2        删除暂存区文件并且删除源文件
  rm 'test2'
  [root@gitlab git_data]# ll
  total 4
  -rw-r--r-- 1 root root 5 Mar 20 20:16 test
1.9 重命名暂存区文件
  [root@gitlab git_data]# git mv test test.txt
  [root@gitlab git_data]# ll
  total 0
  -rw-r--r-- 1 root root 0 Mar 20 20:47 README
  -rw-r--r-- 1 root root 0 Mar 20 21:01 test.txt
  [root@gitlab git_data]# git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD ..." to unstage)
  #
  #   new file:   test.txt
1.10 查看历史记录
  查看历史提交记录
  [root@gitlab git_data]# git log
  commit bb1dc0bd080f1c2de3fc42a1d3e4a6e16d716422
  Author: dy
  Date:   Tue Mar 20 20:51:34 2018 +0800
  jiangboyang
1.11 查看最近几条提交记录
  [root@gitlab git_data]# git log -3
  commit bb1dc0bd080f1c2de3fc42a1d3e4a6e16d716422
  Author: dy
  Date:   Tue Mar 20 20:51:34 2018 +0800
  jiangboyang
  git log   #→查看提交历史记录
  git log -2   #→查看最近几条记录
  git log -p -1  #→-p显示每次提交的内容差异,例如仅查看最近一次差异
  git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
  git log --pretty=oneline  #→--pretty根据不同的格式展示提交的历史信息
  git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
  git log --pretty=fomat:"%h %cn"  #→查看当前所有提交记录的简短SHA-1哈希字串与提交者的姓名,其他格式见备注。
  #→还可以使用format参数来指定具体的输出格式,这样非常便于后期编程的提取分析哦,常用的格式有:
  格式
  说明
  %s
  提交说明。
  %cd
  提交日期。
  %an
  作者的名字。
  %cn
  提交者的姓名。
  %ce
  提交者的电子邮件。
  %H
  提交对象的完整SHA-1哈希字串。
  %h
  提交对象的简短SHA-1哈希字串。
  %T
  树对象的完整SHA-1哈希字串。
  %t
  树对象的简短SHA-1哈希字串。
  %P
  父对象的完整SHA-1哈希字串。
  %p
  父对象的简短SHA-1哈希字串。
  %ad
  作者的修订时间。
1.12 还原未来数据
  什么是未来数据?就是还原到历史数据了,但是你后悔了,想撤销更改,但是git log找不到这个版本了
  git reflog    ---查看未来历史的更新点
1.13 还原历史数据
  [root@gitlab git_data]# git log                     利用git log查看版本号
  commit 3bd1ed4424eb5e66cfc5ce855228a3547e5bef47
  Author: dy
  Date:   Tue Mar 20 20:16:46 2018 +0800
  xiugaiwenjian
  commit 90a7e9ce4469fda8712c0a9cdb39693bd34b92c5
  Author: dy
  Date:   Tue Mar 20 20:10:09 2018 +0800
  ceshiwenjian_2018.3.21
  [root@gitlab git_data]# ll
  total 4
  -rw-r--r-- 1 root root 5 Mar 20 20:16 test
  [root@gitlab git_data]# git reset --hard 90a7e9ce
  HEAD is now at 90a7e9c ceshiwenjian_2018.3.21
  [root@gitlab git_data]# cat test
  [root@gitlab git_data]# git reset --hard 3bd1ed4424e
  HEAD is now at 3bd1ed4 xiugaiwenjian
  [root@gitlab git_data]# cat test
  daya
1.14 标签使用
  [root@gitlab git_data]# git tag v200217        给当前提交内容打一个标签,每次提交都可以打tag
  [root@gitlab git_data]# git tag                查看当前所有标签
  v200217
  [root@gitlab git_data]# git show v200217       查看当前标签详细信息
  commit 5f499e63e4db0ce040e0527467a085fe644519b1
  Author: dy
  Date:   Wed Mar 21 13:19:56 2018 +0800
  xiugai
  diff --git a/jiang.txt b/jiang.txt
  index ba9c1ad..c5e58fc 100644
  --- a/jiang.txt
  +++ b/jiang.txt
  @@ -1 +1,2 @@
  nihao
  +888
  [root@gitlab git_data]# git reset --hard 8c44f2f
  HEAD is now at 8c44f2f 777
  [root@gitlab git_data]# cat jiang.txt
  nihao
  [root@gitlab git_data]# git reset --hard v200217
  HEAD is now at 5f499e6 xiugai
  [root@gitlab git_data]# cat jiang.txt
  nihao
  888
1.15 对比数据
  diff命令可以对比当前文件与仓库已保存文件的区别,从而知道对文件做了哪些修改
  [root@gitlab git_data]# cat jiang.txt
  nihao
  888
  [root@gitlab git_data]# echo 666 >>jiang.txt
  [root@gitlab git_data]# git diff jiang.txt
  diff --git a/jiang.txt b/jiang.txt
  index c5e58fc..a232fb5 100644
  --- a/jiang.txt
  +++ b/jiang.txt
  @@ -1,2 +1,3 @@
  nihao
  888
  +666
  [root@gitlab git_data]#
第2章 分支结构
  [root@gitlab git_data]# git branch                      查看当前系统所有分支
  * master
  [root@gitlab git_data]# git branch linux                创建分支
  [root@gitlab git_data]# git branch
  linux
  * master
  [root@gitlab git_data]# git checkout linux              切换分支
  Switched to branch 'linux'
  [root@gitlab git_data]# git branch
  * linux
  master
  [root@gitlab git_data]# git branch -D linux             删除分支
  Deleted branch linux (was 5f499e6).
2.1 代码合并:
  [root@gitlab git_data]# git merge linux
  Updating 90a7e9c..84a289b
  Fast-forward
  test | 1 +
  1 file changed, 1 insertion(+)
2.1.1 合并分支时的冲突问题:
  [root@gitlab git_data]# git branch
  linux
  * master
  [root@gitlab git_data]# cat test
  linux branch
  [root@gitlab git_data]# echo nihao >>test
  [root@gitlab git_data]# git commit -a -m "nihao"
  [root@gitlab git_data]# git checkout linux
  Switched to branch 'linux'
  [root@gitlab git_data]# echo buhao >>test
  [root@gitlab git_data]# git commit -a -m "buhao"
  [linux c21fd3c] buhao
  1 file changed, 1 insertion(+)
  [root@gitlab git_data]# git status
  # On branch linux
  nothing to commit, working directory clean
  [root@gitlab git_data]# git branch
  * linux
  master
  [root@gitlab git_data]# git checkout master
  Switched to branch 'master'
  [root@gitlab git_data]# git merge linux
  Auto-merging test
  CONFLICT (content): Merge conflict in test
  Automatic merge failed; fix conflicts and then commit the result.
  [root@gitlab git_data]# vim test                      手动解决冲突,只保留想要保留的数据然后保存
  [root@gitlab git_data]# git commit  -a -m "hebingshibai"
  [master e5092ee] hebingshibai
  [root@gitlab git_data]# cat test
  linux branch
  nihao
第3章 windows客户端使用
  windows 上git软件网站 https://git-for-windows.github.io
  软件下载地址:https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/Git-2.15.1.2-64-bit.exe  软件安装默认即可。
第4章 搭建gitlab私有仓库
4.1 安装gitlab,软件比较大,注意内容空间
  yum -y localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm
  gitlab-ctl reconfigure  #→初始化,就执行一次
  gitlab-ctl status
4.2 在浏览器中输入ip地址进行访问,我这里ip是10.0.0.63
DSC0001.jpg

DSC0002.jpg

DSC0003.jpg

1.1 定义项目名称
DSC0004.jpg

DSC0005.jpg

1.1 创建完成后会提示没有ssh密钥:
  在服务端生成密钥对,复制公钥内容粘贴到网页上即可
  [root@gitlab ~]# 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:
  84:76:c5:d0:b0:7a:28:b0:e2:0e:12:7c:d7:cf:4d:a4 root@gitlab
  The key's randomart image is:
  +--[ RSA 2048]----+
  |        o=.      |
  |       . oo      |
  |  .   o +  .     |
  |.  o ..=  o      |
  |o.....o.SE .     |
  |.o. .. .o o      |
  |o.       o .     |
  |+                |
  | .               |
  +-----------------+
  [root@gitlab ~]# cd /root/.ssh/

  [root@gitlab .ssh]# cat>  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAGOae1O+UBTUPJNIIgOTdgB0KXT26HhZgh5JFRgau6BifEI34goNMYxNQS5pHiSO6GdHbk+wSi5ZB3Xl9nWYL29zbtSC7TDWEoPlz/FCbk4LXylFF+20MXt0hu+NsBS8xkMk0uyIt4ELEfZ8KO/Ki2zT6aFUJrqmkqxnn9hQyoiOPZv0ewQEYHfgUnXlGkA21arIOL3fMuaLoGcuyeiTEbL2H60nG8N3kC3B/4EcUs18P9rqAKv2A2tMsHoQyzfTRNSHHf1bWnc28oZ4KcQrdIfOQkLQCXMF6Vb9HWmJ01xCdwMiTbcGTQnkudr8bmeJitNnlqIqoZ2sCYsHf52gR root@gitlab
DSC0006.jpg

1.1 上传文件到gitlab私有仓库:
  [root@gitlab ~]# cd 43team
  [root@gitlab 43team]# touch README.md
  [root@gitlab 43team]# git add README.md
  [root@gitlab 43team]# git commit -m "add README"
  [master (root-commit) 9429222] add README
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 README.md
  [root@gitlab 43team]# git push -u origin master
  Counting objects: 3, done.
  Writing objects: 100% (3/3), 208 bytes | 0 bytes/s, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To git@10.0.0.63:root/43team.git
  * [new branch]      master -> master
  Branch master set up to track remote branch master from origin.
第2章 什么是github?
  github是一个git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,github不仅可以托管各种git版本仓库,还拥有更美观的web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库


运维网声明 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-584476-1-1.html 上篇帖子: linux下安装git常见故障整理 下篇帖子: git 在windows下的应用(一) - 本地仓库代码管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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