Git概述(上)

简介: Git概述(上)

一、Git版本控制器概述


(1)什么是版本控制器


  • 版本控制器就是用来存放代码的
  • 版本控制器的种类:


SVN:集中式的版本控制器,也就是所有的代码都存放在一台服务器上,写代码之前都需要上传或下载

GIT:分布式的版本控制器


(2)Git简介


  • Git是目前世界上最先进的分布式版本控制系统,没有之一
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从小到大的项目版本管理
  • Git是Linus Torvalds为了帮助管理linux内核开发而开发的一个开源的版本控制软件


e9e8252e9da44d01aab74da6390f6ca5.png

(3)扩展——Git的诞生

 Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?
 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
 你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
 不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
 安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。
 Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:
 Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

(4)Git的作用


我们用word写文档会遇到一下问题:


  1. 1.想删除一个段落,又怕将来想恢复找不回,然后把文件另存为,最后在windwos下生成好多的文档。


  1. 过段时间想找回被删除的文字,已经不知道删除前保存在哪个文件
  2. 想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删
  3. 有些文档需要别人帮助填写,你传给同事以后,你又更新了文档,然后同事填完文件又传给了你,怎么去合并文档。

而使用git以后就可以解决上面遇到的所有问题。它可以统一进行版本控制,自动记录每次文件的改动,进行代码合并,不需要把文件传来传去,如果想查看某次改动,只需要在软件里瞄一眼就可以


(5)集中式和分布式的区别


  • 集中式:


CVS和SVN都是集中式的版本控制系统


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


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


  • 分布式:


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


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


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


(6)Git的工作原理


对于任何一个文件,Git对其都有四种状态,分别是:工作目录、暂存区、本地仓库、远程仓库


一个文件刚刚创建时,是工作目录的状态,当在里面写好代码之后,这个文件会到暂存区,在暂存区的文件是可以取消提交的,之后文件就会到本地仓库,本地仓库的文件可以上传到远程仓库,方便和其他人共享


(7)Git的优点


更顺畅的工作流程,开发过程中,完全可以离线操作


快速,Git分布式架构使得本地仓库包含所有的历史版本信息,你可以在不同的版本之间快速切换


弹性的本地分支,在svn下,你建一个分支需要把源代码复制到另外一个文件夹,而在Git下,创建分支的代价是非常小的,只需一条命令


仓库目录结构简洁,用Git复制一个项目,只会在项目根目录创建一个.git的目录,而其他目录很干净


内容按元数据方式存储,所有的版本信息都位于.git目录下


完整性好,更易于协作开发


用户群大,现在已经有成千上万个开源项目采用Git来做项目管理,github上更是有无数个代码仓库


(8)分支讲解


我们在公司里面一般使用master作为主分支,开发人员使用开发分支,当开发人员开发完代码以后,会合并到master主分支,进行上线部署服务,我们还可以使用测试分支,当开发人员写完代码以后,可以合并到测试分支,进行测试,测试成功以后,合并到master分支进行生产环境部署,当然为了安全部署,防止线上代码BUG,我们可以创建回滚分支,当我们部署的新版本的软件出现问题,可以马上使用回滚分支进行回滚到上一个稳定版。


#常用命令
查看所有分支        git branch 
分支创建            git branch bb    #bb为分支名称
分支切换            git checkout bb
创建加切换分支       git checkout -b bb
删除本地分支         git branch -d dgf
删除远程分支         git push origin --delete dgf


二、部署Git


(1)实验环境


主机名 ip 角色 软件 系统
git 192.168.100.202 server git centos7.4
client 192.168.100.203 client git centos7.4


(2)实验步骤


在两台主机上都安装git,需要ssh的支持,某些版本服务器需要安装git-core才是服务器

******(1)git主机步骤
[root@Centos7 ~]# hostnamectl  set-hostname git
[root@Centos7 ~]# su
[root@git ~]# yum -y install git   #默认就有,没有的话就使用yum安装
******(2)client主机步骤
[root@Centos7 ~]# hostnamectl set-hostname client
[root@Centos7 ~]# su
[root@client ~]# yum -y install git

(3)使用git


-服务端创建空仓库


******(1)git主机步骤
[root@Centos7 ~]# hostnamectl  set-hostname git
[root@Centos7 ~]# su
[root@git ~]# yum -y install git   #默认就有,没有的话就使用yum安装
******(2)client主机步骤
[root@Centos7 ~]# hostnamectl set-hostname client
[root@Centos7 ~]# su
[root@client ~]# yum -y install git


-linux客户端进行测试

******(1)这个不需要创建其他用户,直接使用root用户即可,创建工作目录
[root@client ~]# mkdir git
[root@client ~]# cd git/
******(2)拉取库到本地
[root@client git]# git clone git@192.168.100.202:/home/git/project  #复制202的库到本地
正克隆到 'project'...
The authenticity of host '192.168.100.202 (192.168.100.202)' can't be established.
ECDSA key fingerprint is SHA256:VhTZ5YxS5af2rHtfCvyc6ehXh3PD2A8KY2MyE6rHjiU.
ECDSA key fingerprint is MD5:e8:41:d2:8a:7e:e9:a9:47:a3:f0:29:be:e9:6d:df:51.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.202' (ECDSA) to the list of known hosts.
git@192.168.100.202's password:   #输入git用户密码
warning: 您似乎克隆了一个空版本库。
[root@client git]# ll   #查看是否成功拉取了中央服务器的库
总用量 0
drwxr-xr-x 3 root root 18 6月  25 22:58 project
******(3)往本地的仓库添加新文件
[root@client git]# cd project/
[root@client project]# touch aaa.txt
[root@client project]# ll
总用量 0
-rw-r--r-- 1 root root 0 6月  25 23:00 aaa.txt
******(4)添加到暂存区
[root@client project]# git add .   #把当前目录的文件添加到暂存区
[root@client project]# git status   #查看暂存区的文件状态
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件:    aaa.txt    #这个就是刚刚放到仓库的新文件
#
******(5)提交到本地仓库
[root@client project]# git commit -m "aaa"  #-m后面加备注信息
*** Please tell me who you are.
Run
  git config --global user.email "you@example.com"     #发现报错,需要登录邮箱,指定name,输入这两条命令,随便写就行
  git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@client.(none)')
[root@client project]# git config --global user.email "aaa@qq.com"   
[root@client project]# git config --global user.name "aaa"
[root@client project]# git commit -m "aaa"   #重新提交到本地仓库
[master(根提交) 47fcee0] aaa
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 aaa.txt
[root@client project]# git remote add origin git@192.168.100.202:/home/git/project.git #确认本地仓库和远程仓库的状态正常,也就是监测origin项目是否存在,默认在初始化仓库后就会生成一个origin项目
fatal: 远程 origin 已经存在。
******(6)将本地仓库代码推送到远程仓库
[root@client project]# git push origin master   #推送到远程仓库
git@192.168.100.202's password:    #输入git中央服务器的密码
Counting objects: 3, done.
Writing objects: 100% (3/3), 189 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.100.202:/home/git/project
 * [new branch]      master -> master
******(7)将本地仓库删除,重新同步远程仓库
[root@client project]# ll
总用量 0
-rw-r--r-- 1 root root 0 6月  25 23:00 aaa.txt
[root@client project]# cd ..
[root@client git]# rm -rf *
[root@client git]# ll
总用量 0
[root@client git]# git clone git@192.168.100.202:/home/git/project  #重新拉取库到本地
正克隆到 'project'...
git@192.168.100.202's password: 
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
接收对象中: 100% (3/3), done.
[root@client git]# ll
总用量 0
drwxr-xr-x 3 root root 33 6月  25 23:25 project
[root@client git]# cd project/ 
[root@client project]# ll           #成功复制
总用量 0
-rw-r--r-- 1 root root 0 6月  25 23:25 aaa.txt

-Windows使用方法


Windows使用的是TortoiseGit软件,也叫乌龟


TortoiseGit是一个开放的git版本控制系统的源客户端,支持windows xp、vista、7的软件版本,该软件功能和git是相同的


TortoiseGit是界面化操作,而git是命令行操作,默认安装好是英文语言,可以使用中文的语言包


TortoiseGit只是一个程序外壳,想要使用必须依赖一个Git Core,所以必须安装windows的git,下载地址为: https://gitforwindows.org/


TortoiseGit的官网:https://tortoisegit.org/download/,官网下载慢的话,可以去360软件管家下载


6d0de855aeb7446d972273bf6fc9e07b.png

image.png


到windows安装git


c102c797cba9406b9d2ac395347d047d.png

先安装git,最好切换到Administered登录

fda9f13aa98e4e38818672a8a376b6dc.png

b6734b96505c421dbddb3b23698daf3c.png

1f51089c326e4fcfbd817963bd61bbf4.pngeded9c41c9004399a38fecd34a3afd32.png

1ad526dfe54147dfa12071f18113a186.png

4afe9c7d55f349f4bc23d00377ce354f.png

1f4dcead82f94935a9c983b735bc4a24.png

7fecb9f851184ca3800398797fe57faa.png42a1c06bf8a24875bcb3e2d0c0169229.png

f5c84ddb9d8d4e73b78eb96c4cb2950b.png

184c2cff106949b482b29074c5750b6a.png


安装好之后,在桌面点击右键就会出现git的选项,如果没有需要重启系统


49001abbd28943ecba426f39930e6903.png

复制远程库(项目),点击GUI图形化方式


be1cf56c8717474cb624e915a41f824d.png

07ad056be7d94075a90def5b03974b74.png


URL:git@192.168.100.202:/home/git/project

20f68f4d6f204523804ca8eef33e9a62.png

选择本地仓库时会自动创建目录


1bb813fc11c1485188859158c6d51622.png

image.png


注意:git密码需要输入三次


选择项目分支

04ead204ba644b4483041a6a14651f82.png

0228246d8a8f45d798554cf05550d6b0.png

a4f8b04c16584cc784562f52ebe86626.png


d3bf64b02ac347c190c4bb2e40831a7f.png

6c9dba5122a847ef98d59731ec30ca4b.png

52bda605de2c495c90b33234d63bedc9.png

目录
相关文章
|
4月前
|
Linux 项目管理 开发工具
Git项目管理——仓库概述(一)
Git项目管理——仓库概述(一)
54 1
|
存储 Java 开发工具
【Java】Java核心 78:Git 教程(1)Git 概述
01.GIT概述 Git是一个分布式版本控制系统,常用于协同开发和版本管理的工具。它可以跟踪文件的修改、记录历史版本,并支持多人协同工作。通过Git,你可以轻松地创建和切换分支、合并代码、回滚修改等操作。 以下是Git一些常用的命令和功能:
|
开发工具 git
[Git]Git概述与安装(二)
[Git]Git概述与安装(二)
|
安全 Linux 开发工具
|
数据可视化 Linux 项目管理
Git开发、发布、缺陷分离模型概述(支持master/develop/feature/release/hotfix类型分支)
Git开发、发布、缺陷分离模型概述(支持master/develop/feature/release/hotfix类型分支)
131 0
|
数据可视化 容灾 Shell
【Git】概述
【Git】概述
187 0
【Git】概述
|
程序员 Shell 开发工具
【Gitee学习之路】Git概述&&安装教程&&基本操作指令(下)
【Gitee学习之路】Git概述&&安装教程&&基本操作指令(下)
【Gitee学习之路】Git概述&&安装教程&&基本操作指令(下)
|
存储 安全 Shell
【Gitee学习之路】Git概述&&安装教程&&基本操作指令(上)
【Gitee学习之路】Git概述&&安装教程&&基本操作指令(上)
【Gitee学习之路】Git概述&&安装教程&&基本操作指令(上)
|
存储 开发工具 数据库
Git概述(大致介绍)
Git概述(大致介绍)
92 0
Git概述(大致介绍)
|
存储 搜索推荐 JavaScript
Git概述(下)
Git概述(下)
112 0
Git概述(下)