当前位置:   article > 正文

【Git】入门介绍_git去中心化

git去中心化

文章目录

前言

该篇文章,实为简陋,少了很多东西,只是粗浅的了解一下常用的git知识以及对可视化工具的使用

1.Git历史

同生活中的许多伟大事件一样,Git诞生于一个极富纷争大举创新的年代。Linux内核开源项目有着为数众广德参与者。绝大数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到2002年,整个项目组开始启用分布式版本控制系统BitKeeper来管理和维护代码。

到2005年的时候,开发Bitkeeper的商业公司Linux内核开源社区的合作关系结束,他们收回了免费使用BitKeeper的权力。这就迫使Linux开源社区(特别是Linux的缔造者 Linus Torvalds)不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)
    在这里插入图片描述

2. Git和Svn对比

2.1 Svn

SVN 是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,宽带够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。

下图就是标准的集中式版本控制工具管理方式:
在这里插入图片描述

2.2 Git

什么是去中心化思想?
中心化的弊端:
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何写作呢?比如说自己在电脑上改了文件!,其他人也在电脑上改了文件A,这时,你们两个之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
下图就是分布式版本控制工具管理方式:
在这里插入图片描述

2.3 Git 与 SVN的区别

  1. Git 是分布式的,svn不是;这是git 和其它非分布式的版本控制系统,例如:svn,cvs等,最核心的区别
  2. Git 把内容按元数据方式存储,而svn是按文件;所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn .cvs 等文件夹内。
  3. Git 没有一个全局的版本号,而svn有。
  4. Git 的内容完整性要优于svn;git 的内容存储使用的是sha-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

3. Git工作流程

一般工作流程如下:

  1. 从远程仓库中克隆Git资源作为本地仓库。
  2. 从本地仓库中checkout代码然后进行代码修改
  3. 在提交前先将代码提交到暂存区
  4. 提交修改,提交到本地仓库。本地仓库中保存修改的各个历史版本。
  5. 在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。

下图展示了git 的工作流程
在这里插入图片描述

4. Git的安装

最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到windows上。现在,git 可以在Linux、Unix、mac和windows这几大平台上正常运行了。由于开发机大多数情况都是Windows

4.1 软件下载

下载地址:https://git-scm.com/download

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.2 软件安装

4.2.1 安装git for Linux

$ yum install curl-devel expat-devel gettext-devel\openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
  • 1
  • 2
  • 3

4.2.2 安装git for windows

点击 git-2.13.0-64-bit.exe 一直下一步即可…

4.2.3 安装TortoiseGit

图形化git管理工具,点击xxx.msi一直下一步即可…

5. Git配置

5.1 Git 配置

git 提供了一个叫做git config 的工具,专门用来配置活读取相应的工作环境变量。这些环境变量,决定了git 在各个环节的具体工作方式和行为。

5.2 用户信息

配置个人的用户名和电子邮件地址

$ git config --global user.name "zhangsan"
$ git config --global user.emial zhangsan@163.com
  • 1
  • 2

5.3 查看配置信息

要检查自己的配置信息,可以使用git config --list 命令
在这里插入图片描述

5.4 差异分析工具

有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用vimdiff的话:git config --global merge.tool vimdiff

6. 使用git管理文件版本

6.1 创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被git管理起来,每个文件的修改、删除,git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git 是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。

创建一个版本库非常简单,可以使用git bash 也可以使用 tortoiseGit。首先,选择一个合适的地方,创建空目录。

6.1.1 使用GitBash

在当前目录D:\git\repository中点击右键选择bit bash 来启动:
![在这里插入图片描述](https://img-blog.csdnimg.cn/412fe8bac2d84661a9d071334c4eda62.png

6.1.2 使用TortoiseGit

使用TortoiseGit时需要在目录中点击右键菜单选择 ‘git create repository here…’
在这里插入图片描述
不勾选
概念:
版本库:.git 目录就是版本库,将来文件都需要保存到版本库中。
**工作目录:**包含 .git 目录的目录,也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中。

解决图标不显示问题

在这里插入图片描述

6.2 添加文件

6.2.1 使用GitBash

git add 命令可将该文件添加到暂存区。
添加一个或多个文件到暂存区
在这里插入图片描述

6.2.2 添加文件过程

在D:\git\repositroy 目录下创建一个mytest.txt文件… 省略

6.2.3 工作区和暂存区

git和其他版本控制系统如svn的一个不同之处就是具有暂存区的概念。
什么是工作区?
工作区就是你在电脑里能看到的目录,比如我的reporstory文件夹就是一个工作区。有的同学可能会说repository不是版本库吗怎么是工作区了?其实repository目录是工作区,在这个目录中的".git"隐藏文件夹才是版本库。
git 的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区(需要提交的文件修改都放到暂存区,然后一次性提交暂存区的所有修改),还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。如下图所示:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
前面讲了我们把文件往git版本库里添加的时候,是分两步执行的:
第一步是用git add 把文件添加进去, 实际上就是把文件修改添加到暂存区;
第二部是用git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建git版本库时,git自动为我们创建了唯一的一个master分支,所以,现在,git commit 就是往master分支上提交更改。
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

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

git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
通常我们使用-s 参数来获得简短的输出结果:

在这里插入图片描述
??: 没有提交

6.4 修改文件

6.4.1 提交修改

被版本库管理的文件不可避免的要发生修改,此时只需要直接对文件修改即可。修改完毕后需要将文件的修改提交到版本库。
先修改文件
在这里插入图片描述

6.4.2 使用git bash 提交

git commit test.txt -m 第一次提交
  • 1

6.4.3 查询修改历史

在文件上点击右键选择“显示日志”来查看文件的修改历史。
在这里插入图片描述

6.4.4 使用gitbash查看历史

git log
  • 1
# 查看test.txt文件修改历史
git log test.txt 
  • 1
  • 2

在这里插入图片描述

在这里插入图片描述

6.4.5 差异比较

当文件内容修改后,需要和修改之前对比一下修改了哪些内容此时可以使用“比较差异功能”
在这里插入图片描述

6.4.6 使用git bash 差异比较

git diff 
  • 1

6.4.7 还原修改

当文件修改后不想把修改的内容提交,还想还原到未修改之前的状态。此时可以使用“还原”功能
在这里插入图片描述

6.5 删除文件

6.5.1 使用tortoise删除

在这里插入图片描述

6.5.2 使用gitbash删除

git delete a.txt
  • 1

6.6 移动或重命名工作区文件

git mv 命令用于移动或重命名一个文件,目录或软连接
git mv [file][newfile]
  • 1
  • 2

7. 远程仓库github

7.1 添加远程库

现在我们已经在本地创建一个git仓库,又想让其它人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。
常用的远程仓库就是GitHub

7.1.1 在GitHub上创建仓库

首先你得在GitHub上创建一个账户。然后在GitHub上创建一个仓库
在这里插入图片描述

在这里插入图片描述

7.1.2 ssh协议

7.1.2.1 什么是ssh

ssh 为secure shell(安全外壳协议)的缩写,由IETF的网络小组所定制。ssh是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用ssh协议可以有效防止远程管理过程中的信息泄漏问题。

7.1.2.2 基于密钥的安全验证

使用ssh协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。如果你要连接到ssh服务器上,客户端软件就会向服务器发送请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密钥,然后把它和你发送过来的公用密钥进行比较。如果两个密钥一致,服务器就用公用密钥加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密钥解密。

7.1.2.3 ssh密钥生成

在Windows下可以使用git bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开git bash
在这里插入图片描述
git bash 执行命令,生成公钥和私钥
命令:ssh-keygen -t rsa
在这里插入图片描述

7.1.2.4 ssh密钥配置

在这里插入图片描述
在这里插入图片描述

7.1.3 同步到远程仓库

同步到远程仓库可以使用git bash也可以使用tortoiseGit

7.1.3.1 使用git bash

在这里插入图片描述

git remote add origin git@github.com:bluecats2060/crm2010.git
git push -u origin master # 推送到远程仓库
  • 1
  • 2
7.1.3.2 使用tortoiseGit 同步

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.2 从远程仓库克隆

克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库。

7.2.1 使用git bash

git clone git@github.com:bluecats2060/test.git
  • 1

在这里插入图片描述

7.2.2 使用tortoiseGit

在这里插入图片描述
在这里插入图片描述

7.3 从远程仓库拉取代码

git中从远程的分支获取最新的版本到本地有俩个这样的命令:

  1. git fetch: 相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
  2. git pull: 相当于是从远程获取最新版本并merge到本地
    上述命令其实相当于git fetch 和git merge
    在实际使用中,git fetch更安全一些
    在这里插入图片描述

7.4 推送修改的文件及冲突解决

7.5 删除仓库

GitHub上删除仓库
在这里插入图片描述

8 分支管理

8.1 创建合并分支

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.2 使用tortoiseGit实现分支管理

在这里插入图片描述

8.2.1 创建分支

在这里插入图片描述

8.2.2 GitBash创建分支

git branch
git checkout
  • 1
  • 2

在这里插入图片描述

8.2.3 合并分支

在这里插入图片描述

在这里插入图片描述

8.2.4 删除分支

git branch -d
  • 1

在这里插入图片描述

8.3 解决分支冲突

在这里插入图片描述
master 主分支下有个test.txt文件
dev分支下也有一个test.txt文件
合并时,发送冲突
在这里插入图片描述
在这里插入图片描述

9 git 标签

9.1 新建标签

在这里插入图片描述
在这里插入图片描述

9.2 查看已有标签

git tag
  • 1

在这里插入图片描述

9.3 删除标签

git tag -d v1.1
  • 1

在这里插入图片描述

9.4 查看此版本所有修改的内容

git show v1.0
  • 1

10 在InteIIiJIDEA中使用git

在这里插入图片描述
在这里插入图片描述

10.1 在idea中配置git

11 git 服务器搭建

11.1 为什么要搭建自己的git

在这里插入图片描述

11.2 安装git

在这里插入图片描述

11.3 创建证书登录

在这里插入图片描述

11.4 初始化git仓库

在这里插入图片描述

12 git gitee

12.1 介绍

在这里插入图片描述

12.2 先在gitee上注册账号并登录后,然后上次自己的ssh公钥

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.3 新建仓库

在这里插入图片描述

12.4 关联远程仓库

git remote add origin 
  • 1

在这里插入图片描述

git remote -v
  • 1

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/392065
推荐阅读
相关标签
  

闽ICP备14008679号