52037317 发表于 2018-9-16 11:13:09

Git详解与gitlab使用

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

  CentOS Linux>  # rpm -qa git
  git-1.8.3.1-5.el7.x86_64
  # 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)
  # 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 常规操作示意图:

1.1 创建git数据仓库
  # mkdir git_data
  # ll
  total 4
  -rw-------. 1 root root 1347 Mar 12 11:09 anaconda-ks.cfg
  drwxr-xr-x2 root root    6 Mar 20 20:40 git_data
1.2 初始化git目录
  # git init
  Initialized empty Git repository in /root/git_data/.git/
1.3 查看git当前工作状态
  # git status
  # On branch master
  #
  # Initial commit
  #
  nothing to commit (create/copy files and use "git add" to track)
1.4 创建数据-提交数据
  # touch README
  # ll
  total 0
  -rw-r--r-- 1 root root 0 Mar 20 20:47 README
  # 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 把文件上传的暂存区
  # git addREADME
  # git status
  # On branch master
  #
  # Initial commit
  #
  # Changes to be committed:
  #   (use "git rm --cached ..." to unstage)
  #
  #   new file:   README
1.6 把暂存区的文件提交的版本库,-m是对文件的说明信息
  # git commit -m 'jiangboyang'
   jiangboyang
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 README
1.7 如果修改了已经上传到仓库的文件后,可以一步上传到仓库
  说明:这里的一步上传到仓库是指已经存在仓库中的文件,修改后,支持这样的操作
  # echo daya >>test
  # 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")
  # git commit -a -m "xiugaiwenjian"
   xiugaiwenjian
  1 file changed, 1 insertion(+)
  # git status
  # On branch master
  nothing to commit, working directory clean
1.8 删除暂存区的数据
  # git reset HEAD test2
  # git rm --cached test
  rm 'test'
  # git rm -f test2      删除暂存区文件并且删除源文件
  rm 'test2'
  # ll
  total 4
  -rw-r--r-- 1 root root 5 Mar 20 20:16 test
1.9 重命名暂存区文件
  # git mv test test.txt
  # 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
  # git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD ..." to unstage)
  #
  #   new file:   test.txt
1.10 查看历史记录
  查看历史提交记录
  # git log
  commit bb1dc0bd080f1c2de3fc42a1d3e4a6e16d716422
  Author: dy
  Date:   Tue Mar 20 20:51:34 2018 +0800
  jiangboyang
1.11 查看最近几条提交记录
  # 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 还原历史数据
  # 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
  # ll
  total 4
  -rw-r--r-- 1 root root 5 Mar 20 20:16 test
  # git reset --hard 90a7e9ce
  HEAD is now at 90a7e9c ceshiwenjian_2018.3.21
  # cat test
  # git reset --hard 3bd1ed4424e
  HEAD is now at 3bd1ed4 xiugaiwenjian
  # cat test
  daya
1.14 标签使用
  # git tag v200217      给当前提交内容打一个标签,每次提交都可以打tag
  # git tag                查看当前所有标签
  v200217
  # 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
  # git reset --hard 8c44f2f
  HEAD is now at 8c44f2f 777
  # cat jiang.txt
  nihao
  # git reset --hard v200217
  HEAD is now at 5f499e6 xiugai
  # cat jiang.txt
  nihao
  888
1.15 对比数据
  diff命令可以对比当前文件与仓库已保存文件的区别,从而知道对文件做了哪些修改
  # cat jiang.txt
  nihao
  888
  # echo 666 >>jiang.txt
  # 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
  #
第2章 分支结构
  # git branch                      查看当前系统所有分支
  * master
  # git branch linux                创建分支
  # git branch
  linux
  * master
  # git checkout linux            切换分支
  Switched to branch 'linux'
  # git branch
  * linux
  master
  # git branch -D linux             删除分支
  Deleted branch linux (was 5f499e6).
2.1 代码合并:
  # git merge linux
  Updating 90a7e9c..84a289b
  Fast-forward
  test | 1 +
  1 file changed, 1 insertion(+)
2.1.1 合并分支时的冲突问题:
  # git branch
  linux
  * master
  # cat test
  linux branch
  # echo nihao >>test
  # git commit -a -m "nihao"
  # git checkout linux
  Switched to branch 'linux'
  # echo buhao >>test
  # git commit -a -m "buhao"
   buhao
  1 file changed, 1 insertion(+)
  # git status
  # On branch linux
  nothing to commit, working directory clean
  # git branch
  * linux
  master
  # git checkout master
  Switched to branch 'master'
  # git merge linux
  Auto-merging test
  CONFLICT (content): Merge conflict in test
  Automatic merge failed; fix conflicts and then commit the result.
  # vim test                      手动解决冲突,只保留想要保留的数据然后保存
  # git commit-a -m "hebingshibai"
   hebingshibai
  # 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



1.1 定义项目名称


1.1 创建完成后会提示没有ssh密钥:
  在服务端生成密钥对,复制公钥内容粘贴到网页上即可
  # 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 .   |
  |+                |
  | .               |
  +-----------------+
  # cd /root/.ssh/

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

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

页: [1]
查看完整版本: Git详解与gitlab使用