侧边栏壁纸
博主头像
小周的知识站 博主等级

行动起来,活在当下

  • 累计撰写 80 篇文章
  • 累计创建 12 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录
Git

Git 版本控制器

Administrator
2024-06-16 / 0 评论 / 0 点赞 / 7 阅读 / 0 字

Git 版本控制器

1 概述

持续集成第一步就是开发人员将代码进行提交并推送到代码仓库,比如git、svn。

2 版本控制器种类

版本控制器种类分为分布式版本控制器与集中式版本控制器。

GIT:分布式版本控制器

  • Git 是一款开源的分布式版本控制系统,可以有效、高效的处理从很小到非常大的项目版本管理。Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源代码的版本控制软件。

  • 分布式版本控制器是不需要“中央服务器”的,每个人的电脑上都是一个完整的版本库,这样在工作时就不需要联网了,因为版本库就在自己的 电脑上,在多人协作时,只需要把各自的修改推送给对方,就可以互相看到对方的修改了。

  • 分布式版本控制器和集中式版本控制器相比,分布式版本控制器的安全性显然是比较好的,因为每个人的电脑都有完整的版本库,当一台电脑损坏不要紧只需要从别人电脑在复制一份就行,但是集中式的版本控制器一旦损坏,代码就会丢失。

  • 在实际使用分布式版本控制器时,很少在两人之间互相推送版本库,因为可能两个人不在一个局域网内,所以分布式版本控制器也有一个“中 央服务器”,但是这个中央服务器仅仅是用来方便交换大家的修改,并不像集中式版本控制器那样中央服务器一坏数据就丢失。

SVN:集中式版本控制器

  • CVS和SVN都是集中式的版本控制系统,集中式版本控制系统的版本库是集中存放在中央服务器的,但是因为工作使用的是自己的电脑,所以在工作之前需要从中央服务器获取最新的代码,并且在工作完成后需要再上传到中央服务器

  • 集中式版本控制器的最大缺点就是需要联网才能工作,如果是局域网还行,带宽大,速度够大,可是如果在互联网上,遇到网速慢的话传一个10M的文件可能都需要五分钟,工作效率太慢,尤其是都是下班的时候 才会上传代码,在下班点上传的请求更多,导致上传速度更慢

3 Git特点

Git优点:

  • 适合分布式开发,强调个体;

  • 公共服务器压力和数据量都不会太大;

  • 速度快、灵活;

  • 离线工作;

Git缺点:

  • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码 和版本信息;

  • 权限控制不友好;如果需要对开发者限制各种权限的建议使用 SVN。

4 Git环境部署

主机名:git

IP地址:192.168.1.100

操作系统:Centos7.6

hostnamectl set-hostname git
yum -y install git
git --version

5 Git命令学习

命令

功能

git

获取git命令信息

git config

配置git

git config -global user.name

创建git用户

git config -global user.email

创建git用户邮箱

git config -l

查看git配置信息

git init

初始化代码仓库

git status

查看仓库当前状态,显示有变更的文件

git add 文件名

将文件提交至暂存区

git add *

将当前所有文件提交至暂存区

git commit -m

提交暂存区到本地仓库

git rm

删除工作区文件

git mv

移动或重命名工作区文件

git diff

比较文件的不同,即暂存区和工作区的差异

git diff --staged

比较暂存区文件与当前最新版本之间差异

git diff 分支1 分支2

比较两个分支之间的差异

git log

查看到目前为止历史提交记录

git reflog

查看历史提交所有记录

git show

显示指定提交的元数据以及内容变更

git reste

修改HEAD位置

准备一个空目录当git仓库:

[root@git ~]# mkdir /data
[root@git ~]# cd /data


配置git用户以及邮箱: 因为每次Git提交都会使用该用户信息。

格式:git config --global user.name '用户名'

[root@git data]# git config --global user.name "yesir"

提示:使用了 --global 选项,这些信息将被写入 ${HOME}/.gitconfig 中; 如果在特定的项目中, 要使用其他的用户名或者Email地址,只需重新配置时去掉 --global选项,新的信息将被写入 .git/config 中

配置git用户邮箱:

格式:git config –global user.email '邮箱'

[root@git data]# git config --global user.email "yesir@163.com"

配置高亮颜色显示(增加体验感) 如果这个信息不配置,那么你与Git交互时,所有字体的颜色都将是默认系统的一个颜色。

[root@git ~]# git config --global color.ui true

查看配置信息:

格式:git config -l,--list 用于列出~./config配置文件中的一些变量信息,以及${HOME}/.gitconfig中的用户与邮箱。

[root@git data]# git config -l

初始化代码仓库 (将一个目录初始化为git仓库)

格式: git init

[root@git data]# git init
​
#查看工作目录(初始化的目录被称为工作目录)
[root@git data]# ls -a
.  ..  .git    #该目录为Git版本库
​
#查看仓库目录结构树
[root@git data]# tree .git/
branches       #分支项目
config         #定义项目特有的配置选项
description    #仅供git web程序使用
HEAD           #提示当前的分支
hooks          #包含git钩子文件
info           #包含一个全局排除文件(exclude文件)
objects        #存放所有数据内容,里边包含info  pack两个目录
refs           #存放指向数据(分支)的提交对象的指针
index          #保存暂存区信息,在执行git init的时候,这个文件还没有

6. Git 核心概念

对于任何一个文件,Git对其都有四种状态,

工作目录:就是你平常存放项目代码的地方。 暂存区:用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。 本地仓库(版本库):就是安全存放数据的位置,这里面都是你提交的所有代码信息。 远程仓库:就是托管代码的服务器,类似于 FTP 服务,能够共享数据。

7. Git工作流程

自己创建编写的文件是工作区,在此编写代码,这个文件会上传到暂存区,紧接着会上传到本地仓库,也是可以随时取消。最后是可以把代码上传到远程仓库,分享供大家访问且使用。

8. Git快速入门

在工作区创建项目文件:

[root@git data]# touch a.txt  b.txt  c.txt

查看工作区文件状态:

格式:git status

[root@git date]# git status

提交工作区文件到暂存区(所有的项目文件都需要经过暂存区才可以被提交到git仓库中)

格式:git add 文件名

[root@git data]# git add t1.txt
​
#暂存区的文件被临时存储在.git/index文件内
[root@git data]# tree .git

将工作目录所有文件提交到暂存区的方式:

格式:git add . 或者 git add *

[root@git date]# git add .
[root@git date]# git status

将文件从暂存区删除:

格式:git rm --cached 文件名

[root@git data]# git rm --cached a.txt
[root@git date]# git status

提示:只是将文件从暂存区删除了,并没有删除源文件。

同时删除暂存区文件与源文件:

格式:git rm -f 文件名

[root@git data]# git rm -f b.txt
[root@git date]# git status

提交文件到仓库:

格式:git commit -m "提交说明" #说明自定义且支持中文

[root@git date]# git commit -m "第一次提交:a.txt"

提示:提交到仓库中的文件才会被版本控制系统管理。每一次的commit代码提交相当于虚拟机的一次快照功能。随后可恢复到任意位置。

再次查看暂存区(文件已经被提交)

[root@git date]# git status

查看仓库中历史提交信息:

格式:git log

[root@git date]# git log
commit    提交的哈希值
Author:   作者信息
Date:     提交时间
提交描述

简要查看历史提交信息:

git log --oneline

[root@git date]# git log --oneline
4dacc84 a.xx   #哈希值的前7位与描述信息

小结:上述操作简单演示了一个开发人员使用git提交自己的项目文件到版本库中。

9. Git 文件改名

已提交到仓库的文件如果后期被改名,会出现如下问题:

[root@git data]# mv a.txt a.xxx
[root@git date]# git status

由于名字变更,git无法识别。此时文件被退回到暂存区。

删除暂存区文件/重新提交新文件到暂存区

[root@git data]# git rm --cached a.txt
[root@git data]# git add a.xxx
[root@git date]# git status

提交文件到仓库:

[root@git data]# git commit -m '第二次提交:a.txt重命名为a.xxx'
[root@git data]# git log

如果需要修改文件名字,可直接使用git命令改名,这样git可以识别到变化:

格式:git mv 源名称 新名称

[root@git data]# git mv a.xxx a.jsp
[root@git date]# git status

提交文件到仓库:

[root@git data]# git commit -m '第三次提交:a.xxx 重命名为 a.jsp'
[root@git data]# git log

删除仓库文件:

[root@git data]# git rm c.txt
[root@git data]# git status
[root@git data]# git commit -m '删除c.txt'

10. Git 文件比对

文件比对可以显示工作区文件和暂存区文件的差异、暂存区文件和仓库文件之间的差异

比对工作区与暂存区文件差异:

格式:git diff

[root@git date]# git diff

提示:如没有任何信息,表示没有差异。

向文件中添加内容提交至暂存区:

[root@git data]# echo hello > a.jsp
[root@git data]# git add a.jsp

向文件中增加内容不要提交至暂存区:

[root@git data]# echo abcd >> a.jsp

再次比对应该可以发现工作区与暂存区文件的差异:

[root@git data]# git diff

提示:此时暂存区文件与本地仓库文件也不一致。

比对暂存区与本地仓库文件差异:

格式:git diff --cached

[root@git date]# git diff --cached

提交暂存区文件到本地仓库:

[root@git data]# git commit -m '第四次提交:a.jsp增加内容hello'

如果文件已经被仓库管理,再次更改此文件,可直接通过"-am"直接提交到仓库中。

[root@git data]# git commit -am '第五次提交:a.jsp增加内容abcd'

小结:上述演示是当开发人员对项目文件内容更新后,如何进行比对,如何再次提交到仓库。

11. Git 查看历史记录

在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用下边命令查看。

命令格式:

  • 格式1:git log #最详细(上下键查看)、q(退出));

  • 格式2:git log --pretty=oneline #会以一个漂亮的格式显示(每条日志只显示一行);

  • 格式3:git log --oneline #相对于第二种方式的哈希值只会显示一部分;

查看详细历史记录:

[root@git date]# git log
commit    提交的哈希值
Author:   作者信息
Date:     提交时间
提交描述

查看简要历史记录:

[root@git data]# git log --pretty=oneline

查看简要历史记录:

[root@git date]# git log --oneline

12. Git HEAD概念

HEAD 是当前分支引用的指针,它总是指向某次commit,默认最新一次的commit。

通常可以把 HEAD 看做你的上一次提交的快照,当然HEAD的指向是可以改变的,比如你提交了commit,切换了仓库,分支,或者回滚了版本,切换了tag等。

查看指针:在查看历史记录之上通过 --decorate 查看

  • 格式1:git log --decorate

  • 格式2:git log --pretty=oneline --decorate

  • 格式3:git log --oneline --decorate

[root@git data]# git log --decorate
[root@git date]# git log --oneline --decorate
[root@git data]# git log --pretty=oneline --decorate

13. Git版本恢复

在实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,这时候就可以通过版本回退(reset)来实现。

原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,假设我们要回退到版本一,回退之后只保留版本一。

适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

重置当前HEAD指针到指定版本:

格式:git reset --hard 哈希值

#恢复到第一个版本
[root@git date]# git reset --hard 1fd81198
​
#查看当前HEAD指向的版本
[root@git data]# git log  --oneline --decorate
​
#查看历史提交信息(会发现历史提交过的信息已消失,只保留了当前版本记录)
[root@git date]# git log
​
#查看历史提交的所有信息:reflog 
[root@git date]# git reflog
​
#再次回滚至最后一次的提交版本
[root@git date]# git reset --hard 4dacc84


0
Git
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区