|
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 常规操作示意图:
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
1.1 定义项目名称
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
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界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库
|
|