Git详解与gitlab使用

gitlab

第1章 版本控制系统都能干什么?

自动生成备份

知道改动的地方

随时回滚

第2章 常见的版本控制系统

2.1 git

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

常见版本管理工具:

2.2 SVN

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

第3章 环境准备

3.1 git默认最小化安装的时候就已经有了

[[email protected] ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

[[email protected] ~]# rpm -qa git

git-1.8.3.1-5.el7.x86_64

[[email protected] ~]# 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)

[[email protected] ~]# getenforce

Disabled

3.2 Git全局配置:

git config --global user.name "dy"

git config --global user.email "[email protected]"

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数据仓库

[[email protected] ~]# mkdir git_data

[[email protected] ~]# 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目录

[[email protected] git_data]# git init

Initialized empty Git repository in /root/git_data/.git/

1.3 查看git当前工作状态

[[email protected] git_data]# git status

# On branch master

#

# Initial commit

#

nothing to commit (create/copy files and use "git add" to track)

1.4 创建数据-提交数据

[[email protected] git_data]# touch README

[[email protected] git_data]# ll

total 0

-rw-r--r-- 1 root root 0 Mar 20 20:47 README

[[email protected] git_data]# git status

# On branch master

#

# Initial commit

#

# Untracked files:

#   (use "git add <file>..." to include in what will be committed)

#

#   README

nothing added to commit but untracked files present (use "git add" to track)

1.5 把文件上传的暂存区

[[email protected] git_data]# git add  README

[[email protected] git_data]# git status

# On branch master

#

# Initial commit

#

# Changes to be committed:

#   (use "git rm --cached <file>..." to unstage)

#

#   new file:   README

1.6 把暂存区的文件提交的版本库,-m是对文件的说明信息

[[email protected] git_data]# git commit -m 'jiangboyang'

[master (root-commit) bb1dc0b] jiangboyang

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 README

1.7 如果修改了已经上传到仓库的文件后,可以一步上传到仓库

说明:这里的一步上传到仓库是指已经存在仓库中的文件,修改后,支持这样的操作

[[email protected] git_data]# echo daya >>test

[[email protected] git_data]# git status

# On branch master

# Changes not staged for commit:

#   (use "git add <file>..." to update what will be committed)

#   (use "git checkout -- <file>..." to discard changes in working directory)

#

#   modified:   test

#

no changes added to commit (use "git add" and/or "git commit -a")

[[email protected] git_data]# git commit -a -m "xiugaiwenjian"

[master 3bd1ed4] xiugaiwenjian

1 file changed, 1 insertion(+)

[[email protected] git_data]# git status

# On branch master

nothing to commit, working directory clean

1.8 删除暂存区的数据

[[email protected] git_data]# git reset HEAD test2

[[email protected] git_data]# git rm --cached test

rm 'test'

[[email protected] git_data]# git rm -f test2        删除暂存区文件并且删除源文件

rm 'test2'

[[email protected] git_data]# ll

total 4

-rw-r--r-- 1 root root 5 Mar 20 20:16 test

1.9 重命名暂存区文件

[[email protected] git_data]# git mv test test.txt

[[email protected] 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

[[email protected] git_data]# git status

# On branch master

# Changes to be committed:

#   (use "git reset HEAD <file>..." to unstage)

#

#   new file:   test.txt

1.10 查看历史记录

查看历史提交记录

[[email protected] git_data]# git log

commit bb1dc0bd080f1c2de3fc42a1d3e4a6e16d716422

Author: dy <[email protected]>

Date:   Tue Mar 20 20:51:34 2018 +0800

jiangboyang

1.11 查看最近几条提交记录

[[email protected] git_data]# git log -3

commit bb1dc0bd080f1c2de3fc42a1d3e4a6e16d716422

Author: dy <[email protected]>

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 还原历史数据

[[email protected] git_data]# git log                     利用git log查看版本号

commit 3bd1ed4424eb5e66cfc5ce855228a3547e5bef47

Author: dy <[email protected]>

Date:   Tue Mar 20 20:16:46 2018 +0800

xiugaiwenjian

commit 90a7e9ce4469fda8712c0a9cdb39693bd34b92c5

Author: dy <[email protected]>

Date:   Tue Mar 20 20:10:09 2018 +0800

ceshiwenjian_2018.3.21

[[email protected] git_data]# ll

total 4

-rw-r--r-- 1 root root 5 Mar 20 20:16 test

[[email protected] git_data]# git reset --hard 90a7e9ce

HEAD is now at 90a7e9c ceshiwenjian_2018.3.21

[[email protected] git_data]# cat test

[[email protected] git_data]# git reset --hard 3bd1ed4424e

HEAD is now at 3bd1ed4 xiugaiwenjian

[[email protected] git_data]# cat test

daya

1.14 标签使用

[[email protected] git_data]# git tag v200217        给当前提交内容打一个标签,每次提交都可以打tag

[[email protected] git_data]# git tag                查看当前所有标签

v200217

[[email protected] git_data]# git show v200217       查看当前标签详细信息

commit 5f499e63e4db0ce040e0527467a085fe644519b1

Author: dy <[email protected]>

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

[[email protected] git_data]# git reset --hard 8c44f2f

HEAD is now at 8c44f2f 777

[[email protected] git_data]# cat jiang.txt

nihao

[[email protected] git_data]# git reset --hard v200217

HEAD is now at 5f499e6 xiugai

[[email protected] git_data]# cat jiang.txt

nihao

888

1.15 对比数据

diff命令可以对比当前文件与仓库已保存文件的区别,从而知道对文件做了哪些修改

[[email protected] git_data]# cat jiang.txt

nihao

888

[[email protected] git_data]# echo 666 >>jiang.txt

[[email protected] 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

[[email protected] git_data]#

第2章 分支结构

[[email protected] git_data]# git branch                      查看当前系统所有分支

* master

[[email protected] git_data]# git branch linux                创建分支

[[email protected] git_data]# git branch

linux

* master

[[email protected] git_data]# git checkout linux              切换分支

Switched to branch 'linux'

[[email protected] git_data]# git branch

* linux

master

[[email protected] git_data]# git branch -D linux             删除分支

Deleted branch linux (was 5f499e6).

2.1 代码合并:

[[email protected] git_data]# git merge linux

Updating 90a7e9c..84a289b

Fast-forward

test | 1 +

1 file changed, 1 insertion(+)

2.1.1 合并分支时的冲突问题:

[[email protected] git_data]# git branch

linux

* master

[[email protected] git_data]# cat test

linux branch

[[email protected] git_data]# echo nihao >>test

[[email protected] git_data]# git commit -a -m "nihao"

[[email protected] git_data]# git checkout linux

Switched to branch 'linux'

[[email protected] git_data]# echo buhao >>test

[[email protected] git_data]# git commit -a -m "buhao"

[linux c21fd3c] buhao

1 file changed, 1 insertion(+)

[[email protected] git_data]# git status

# On branch linux

nothing to commit, working directory clean

[[email protected] git_data]# git branch

* linux

master

[[email protected] git_data]# git checkout master

Switched to branch 'master'

[[email protected] git_data]# git merge linux

Auto-merging test

CONFLICT (content): Merge conflict in test

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

[[email protected] git_data]# vim test                      手动解决冲突,只保留想要保留的数据然后保存

[[email protected] git_data]# git commit  -a -m "hebingshibai"

[master e5092ee] hebingshibai

[[email protected] 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密钥:

在服务端生成密钥对,复制公钥内容粘贴到网页上即可

[[email protected] ~]# 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 identification has been saved in /root/.ssh/id_rsa.

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 [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

|        o=.      |

|       . oo      |

|  .   o +  .     |

|.  o ..=  o      |

|o.....o.SE .     |

|.o. .. .o o      |

|o.       o .     |

|+                |

| .               |

+-----------------+

[[email protected] ~]# cd /root/.ssh/

[[email protected] .ssh]# cat id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAGOae1O+UBTUPJNIIgOTdgB0KXT26HhZgh5JFRgau6BifEI34goNMYxNQS5pHiSO6GdHbk+wSi5ZB3Xl9nWYL29zbtSC7TDWEoPlz/FCbk4LXylFF+20MXt0hu+NsBS8xkMk0uyIt4ELEfZ8KO/Ki2zT6aFUJrqmkqxnn9hQyoiOPZv0ewQEYHfgUnXlGkA21arIOL3fMuaLoGcuyeiTEbL2H60nG8N3kC3B/4EcUs18P9rqAKv2A2tMsHoQyzfTRNSHHf1bWnc28oZ4KcQrdIfOQkLQCXMF6Vb9HWmJ01xCdwMiTbcGTQnkudr8bmeJitNnlqIqoZ2sCYsHf52gR [email protected]

1.1 上传文件到gitlab私有仓库:

[[email protected] ~]# cd 43team

[[email protected] 43team]# touch README.md

[[email protected] 43team]# git add README.md

[[email protected] 43team]# git commit -m "add README"

[master (root-commit) 9429222] add README

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 README.md

[[email protected] 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 [email protected]: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界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库

原文地址:http://blog.51cto.com/13520772/2089430

时间: 2024-11-02 13:41:14

Git详解与gitlab使用的相关文章

【转】Git详解之一:Git起步

原文网址:http://blog.jobbole.com/25775/ 原文:<Pro Git> 起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git 会如此流行,为什么你应该立即开始使用它.(查看Git详解系列的全部文章) 1.1 关于版本控制 什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统.在

git详解

git详解 git是从android出现,就作为版本管理工具.由于很多人从svn开始使用,简单的check in & check out操作,很难理解和适应通过命令行操作的git的管理. 所以很多人继续使用图形界面的git管理工具,尤其android studio自带git的图形操作界面,使得很多人懒得学习和掌握git的具体运行规则.从而导致很多分支冲突,管理混乱的情况.以下是笔者写的一篇关于git比较详细的介绍.常见关于git的操作,都包含在内.由于英文很简单,就不做翻译了.只强调一点,要想真

图解Git详解命令

图解Git命令 上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. ·git add files把当前文件放入暂存区域. ·git commit 给暂存区域生成快照并提交. ·git reset --files 用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件. ·git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改. 你可以用 git reset -p, git checkout -p, o

Git详解之三 Git分支

相关文档 — 更多 Git 基础培训.ppt GIT 使用经验.ppt GIT 介绍.pptx GIT 分支管理是一门艺术.docx Eclipse上GIT插件EGIT使用手册.docx git/github学习笔记.doc git 版本控制系统.docx Git开发管理之道.pdf Git内部培训资料.pptx Git权威指南-第5篇-第32章-Gerrit.pdf Gitolite 构建 Git 服务器.pdf 版本控制之道 - 使用Git.pdf Git使用指南(中文).pdf Git-C

Git详解及 github与gitlab使用

1.1 关于版本控制 1.1.1 本地版本控制 本地版本控制系统 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别.这么做唯一的 好处就是简单,但是特别容易犯错.有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件. 1.1.2 集中化的版本控制系统 如何让在不同系统上的开发者协同工作?于是,集中化的版本控制系统(Centralized Version  Control Systems,简称 CVCS)应运而生.这类系统,诸如 CVS.Subve

Git详解及github与gitlab使用

第一章 关于版本控制 第二章 GIT简介 第三章 GIT安装 第四章 初次运行GIT前配置 第五章 初始化仓库 原文地址:https://www.cnblogs.com/baishuchao/p/8620151.html

Git详解之五 分布式Git

来自:http://www.open-open.com/lib/view/open1328070090108.html 分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库.经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令.接下来,我们要学习下如何利用 Git 来组织和完成分布式工作流程. 特别是,当作为项目贡献者时,我们该怎么做才能方便维护者采纳更新:或者作为项目维护者时,又该怎样有效管理大量贡献者的提交. 5.1  分布式工

Git详解之六 Git工具(转)

Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你将领略到一些 Git 可以实现的非常强大的功能,这些功能你可能并不会在日常操作中使用,但在某些时候你也许会需要. 6.1  修订版本(Revision)选择 Git 允许你通过几种方法来指明特定的或者一定范围内的提交.了解它们并不是必需的,但是了解一下总没坏处. 单个修订版本 显然你可以使用给出的

Git详解之五:分布式Git

为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库.经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令.接下来,我们要学习下如何利用 Git 来组织和完成分布式工作流程.(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读) 特别是,当作为项目贡献者时,我们该怎么做才能方便维护者采纳更新:或者作为项目维护者时,又该怎样有效管理大量贡献者的提交. 5.1  分布式工作流程 同传统的集中式版本控制系统(CVCS)不同,开发者之