admin管理员组

文章数量:1648650

目录

  • 1、版本控制
    • 1.1、什么是版本控制?
    • 1.2、版本控制的作用
    • 1.3、版本控制的内容
    • 1.4、常见的版本控制工具
    • 1.5、版本控制的三大类
      • 1.5.1、本地版本控制
      • 1.5.2、集中版本控制
      • 1.5.3、分布式版本控制
    • 1.6、Git与SVN的主要区别
  • 2、Git的历史
  • 3、Git的安装配置
    • 3.1、Git的卸载(已安装)
    • 3.2、安装最新版Git
    • 3.3、基本Linux命令
    • 3.4、Git配置
  • 4、Git基本理论
    • 4.1、四大分区
    • 4.2、Git常用命令
    • 4.3、工作流程
  • 5、Git项目搭建
    • 方式一:创建新仓库
    • 方式二:克隆远程仓库
  • 6、Git文件操作
    • 6.1、文件的四种状态
    • 6.2、查看文件状态
    • 6.3、gitignore文件
  • 7、使用码云+Git托管项目
    • 7.1、码云创建远程仓库
      • 7.1.1、注册账号
      • 7.1.2、免密码登录——SSH公钥配置
      • 7.1.3、使用码云创建远程仓库
      • 7.1.4、clone到本地
    • 7.2、创建springboot项目使用Git托管
    • 7.3、使用IDEA操作Git
      • 7.3.1、add添加到暂存区
      • 7.3.2、commit提交到本地仓库
      • 7.3.3、push到远程仓库
    • 7.4、修改代码重新提交到Gitee
  • 8、GIT分支
    • 8.1、git分支中常用指令
    • 8.2、IDEA中分支操作
  • 9、Git相关资料

1、版本控制

我们所用的Git就是最常用的一种版本控制工具,所以我们有必要了解一些版本控制的基本知识

1.1、什么是版本控制?

版本控制(Revision control)是指对软件开发过程中各种程序代码配置文件说明文档等文件变更的管理,是软件配置管理的核心思想之一。

  • 可以把一个版本控制系统(Version Control System)理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。

1.2、版本控制的作用

1️⃣ 追踪文件的变更

版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加

2️⃣ 并行开发

软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。

1.3、版本控制的内容

1️⃣ 检入检出控制

实际开发过程中,我们对源文件的修改并不是在软件配置管理库中,而是每个人都有自己的工作空间,对源文件的修改依赖于基本的文件系统在自己的工作空间下进行

访问控制需要管理各个人员存取或修改一个特定软件配置对象的权限。

  • 开发人员能够从库中取出对应项目的配置项进行修改,并检入到软件配置库中,对版本进行“升级”;
  • 配置管理人员可以确定多余配置项并删除。

同步控制的实质是版本的检入检出控制,可用来确保由不同的人并发执行的修改不会产生混乱。

  • 检入就是把软件配置项从用户的工作环境存入到软件配置库的过程
  • 检出就是把软件配置项从软件配置库中取出的过程
  • 检人是检出的逆过程

2️⃣ 分支和合并

首先了解一下两个基本的概念:

版本分支:以一个已有分支的特定版本为起点,但是独立发展的版本序列

版本合并:来自不同分支的两个版本合并为其中一个分支的新版本

版本分支的人工方法就是从主版本(主干)上拷贝一份,并做上标记。

  • 在实行了版本控制后,版本的分支也是一份拷贝,这时的拷贝过程和标记动作由版本控制系统完成。

版本合并有两种途径:

  1. 将版本A的内容附加到版本B中
  2. 合并版本A和版本B的内容,形成新的版本C

3️⃣ 历史记录

版本的历史记录有助于对软件配置项进行审核,有助于追踪问题的来源,包括以下几个部分

  • 版本号
  • 版本修改时间
  • 版本修改者
  • 版本修改描述等最基本的内容
  • 还可以有其他一些辅助性内容,比如版本的文件大小和读写属性。

1.4、常见的版本控制工具

主流的版本控制器有如下这些,其中影响力最大且使用最广泛的是Git与SVN

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

1.5、版本控制的三大类

1.5.1、本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。

1.5.2、集中版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改

  • 代表产品:SVN
  • 所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本
  • 如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。
  • 所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。

1.5.3、分布式版本控制

所有版本信息仓库全部同步到本地的每个用户

  • 代表产品:GitGit是目前世界上最先进的分布式版本控制系统。
  • 每个人都拥有全部的代码,有很大的安全隐患

  • 可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。

  • 由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

  • 不会因为服务器损坏或者网络问题,造成不能工作的情况!

1.6、Git与SVN的主要区别

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

  • Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!



2、Git的历史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

Linux社区中存在很多的大佬!破解研究 BitKeeper !

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。(2周左右!) 也就是后来的 Git!

Git是目前世界上最先进的分布式版本控制系统。



3、Git的安装配置

3.1、Git的卸载(已安装)

  1. 首先在系统环境变量path中删除Git的配置

  2. 打开控制面板(win+r再输入control),直接卸载

3.2、安装最新版Git

官网:https://git-scm/(如果下载速度很慢,建议用以下镜像地址进行下载)

镜像地址:http://npm.taobao/mirrors/git-for-windows/

这里选择最新版进行下载,选择自己对应的系统进行下载,这里为Windows

下载完后,点击安装,安装路径最好选择自己的路径

此处默认即可

下一步默认

这里是选择默认的文本编辑器,大家选择自己电脑上使用的即可,这里选择Sublime

接下来的操作默认即可,直接next

等待安装完成,然后可以发现多了一些组件

  • Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
  • Git CMD:Windows风格的命令行
  • Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

同时我们在任意地方鼠标右键,可以看到新添加的功能

注意:Git环境变量的配置在安装的时候已经自动添加,不用再配置

3.3、基本Linux命令

cd 改变目录

cd.. 回退到上一个目录,直接cd进入默认目录

pwd 显示当前所在的目录路径

ls 列出当前目录中的所有文件

touch 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件

rm 删除一个文件, rm index.js 就会把index.js文件删除

mkdir 新建一个目录,就是新建一个文件夹

rm -r 删除一个文件夹, rm -r src 删除src目录

rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!

mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下

reset 重新初始化终端/清屏

clear 清屏

history 查看命令历史

help 帮助

exit 退出

# 表示注释

3.4、Git配置

Git有两种等级的配置文件

1️⃣ system系统级配置文件Git安装目录/etc/gitconfig

2️⃣ global全局配置文件C盘/用户/用户名/.gitconfig

我们可以通过以下命令查看配置

# 查看配置
git config -l

# 查看系统config
git config --system --list

# 查看当前用户(global)配置
git config --global --list

通常我们需要设置配置文件中的用户名与邮箱,每次Git提交时都会使用该信息

# 修改用户名和邮箱
git config --global user.name "zsr204"	#名称
git config --global user.email "1412578784@qq"	#邮箱

--global是全局配置选项,如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要--global选项



4、Git基本理论

4.1、四大分区

Git分为四个区域,其中前三个区域是本地的,第四个区域是远程的

  • 工作区(WorkSpace):本地存放项目代码的目录
  • 暂存区(Stage/Index):是一个文件,临时存放对文件的更改,保存即将提交到文件列表信息
  • 本地仓库(Repository):安全存放数据的位置,包含提交的所有版本的数据;其中HEAD指向最新放入仓库的版本
  • 远程仓库(Remote):托管代码的服务器,比如Gitee、Github等

被Git托管的文件夹构成如下图所示:

Directory:使用Git管理的目录,包含工作空间和Git的管理空间

  • WorkSpace:工作区,存放通过Git进行版本控制的目录和文件

  • .git隐藏文件:存放Git管理信息的目录,初始化仓库的时候自动创建

    • index:指向暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
    • Head:指向当前的开发分支(branch)

4.2、Git常用命令

日常使用只需要记住其中下图六个命令即可

4.3、工作流程

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域

3、将暂存区域的文件提交到git仓库

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)



5、Git项目搭建

搭建一个Git项目有两种方式,一种是在本地创建新仓库,一种是克隆远程仓库

方式一:创建新仓库

新建一个空文件夹GitCode,作为Git管理的项目文件夹

首先在该目录下执行以下代码初始化称为一个Git代码库

# 在当前目录新建一个Git代码库
git init


执行完成后,就可以看到新生成了一个.git隐藏目录,关于版本的信息都在这个目录里面

方式二:克隆远程仓库

# 克隆一个项目和它的整个代码历史(版本信息)
git clone [url] 

首先复制项目url

然后输入上述命令进行克隆指定的项目地址

然后发现新生成了一个文件夹,这就对应着远程仓库里的内容



6、Git文件操作

6.1、文件的四种状态

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

6.2、查看文件状态

上面说文件有4种状态,通过如下命令可以查看到文件的状态:

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

#添加所有文件到暂存区 
git add .           

#提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m "消息内容"    

6.3、gitignore文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

此时可以在主目录下建立.gitignore文件,配置不需要纳入版本控制的文件

.gitignore文件规则:

  • 忽略文件中的空行或以#开始的行
  • 可以使用Linux通配符
    • 星号*代表任意多个字符
    • 问号?代表一个字符
    • 方括号[abc]代表可选字符范围
    • 大括号{string1,string2,...}代表可选的字符串等
  • 如果名称的最前面有感叹号!,表示不忽略当前文件或目录
  • 如果名称第一个符号为/,表示忽略当前路径下该名称的文件
  • 如果名称最后一个符号为/,表示忽略该名称目录下的所有文件

常用配置

# Java相关
*.class
*.log
*.lock

# 打包文件
*.jar
*.war
*.ear
target/

# IDEA相关
.idea/
*.iml
*.ipr
*.iws
.classpath
.project
.settings/
bin/

# 日志文件
*.log

# 临时文件
tmp/


7、使用码云+Git托管项目

7.1、码云创建远程仓库

github 是有墙的,比较慢,在国内的话,我们一般使用 gitee ,公司中有时候会搭建自己的gitlab服务器

7.1.1、注册账号

注册一个账号,完善个人信息

7.1.2、免密码登录——SSH公钥配置

码云是远程仓库,而我们是平时工作在本地仓库,因此免密码登录十分重要

1️⃣ 设置本机绑定SSH公钥,实现免密码登录

首先进入C:\Users\用户名\.ssh目录

然后在当前目录打开cmd输入以下代码生成SSH公钥

# 生成公钥
ssh-keygen -t rsa

会生成对应的两个文件

2️⃣ 将公钥信息添加到码云SSH公钥中

打开id-rsa.pub文件复制

粘贴到Gitee公钥中,会自动生成标题

然后点击确定,输入密码验证,成功

然后就可以看到新添加的SSH公钥

7.1.3、使用码云创建远程仓库

点击新建一个仓库作为我们项目的远程仓库


点击创建远程仓库

7.1.4、clone到本地

克隆刚刚远程仓库Remote到本地目录

git clone https://gitee/zhong_siru/remote.git

克隆完成后,生成了remote文件夹,里面就是远程仓库中的文件内容以及Git的相关配置

7.2、创建springboot项目使用Git托管

创建一个springboot项目

接下来要需要让该项目被Git托管,只需要将前面我们clone到本地的Gitee远程仓库的Git文件拷贝到该项目目录中即可,也就是将仓库remote中的文件拷贝到该项目目录中

这样该项目下,就有了.git文件夹,也就是被Git托管;回到IDEA,可以发现相应的变化


到此,Git就绑定成功了

7.3、使用IDEA操作Git

首先需要了解一些IDEA中的一些基本操作

1️⃣ 点击下方的Git(或者alt+9)可以查看关于仓库的所有信息

2️⃣ 拉取、提交按钮的位置

7.3.1、add添加到暂存区

打开IDEA的Terminal,输入以下命令将代码添加到暂存区

git add .
然后可以看见项目目录被`add`的文件变成绿色

如果我们修改了某个文件,可以直接右键进行add更改内容到暂存区

7.3.2、commit提交到本地仓库

点击上述提交按钮或者(ctrl+k)

2020IDEA代码提交已经不是以前那种模态化弹框式窗口,现在集成到左边commit侧边栏中

如果想使用以前弹出式的提交窗口,可以按下图所示进行切换

切换后,想要换回来,可以在如下图所示进行设置

提交代码前,需要做相关设置

勾选要提交的文件,然后填写提交的信息,然后点击Commit

提交完成后,点击Git可以查看关于仓库的所有信息,我们在Log中可以看到我们刚提交的操作以及提交的文件

同时在Console控制台可以看到相关信息

7.3.3、push到远程仓库

同样在Terminal中输入以下代码,push到远程仓库

git push

出现如下结果即成功

然后我们打开前面在Gitee新建的远程仓库检验,可以看到我们提交上来的文件

7.4、修改代码重新提交到Gitee

我们随便在一个地方新建一个Hello类,这时候显示为红色

然后会弹框提示你是否将这个文件添加到Git

我们点击Add即可添加到Git,然后可以看到文件变为绿色

接下来,我们通过命令行的方式将这个添加的Hello.java添加到远程仓库

打开Terminal窗口,先后输入以下三个命令

git add .
git commit -m "new .java file Hello"
git push

同样,我们可以查看我们提交的相关信息

然后打开Gitee,可以看到我们刚提交的代码



8、GIT分支

上述的操作都是单人的操作,实际开发中,一个项目是由多个人共同开发的;我们可以在Gitee随便找一个项目,查看其分支

8.1、git分支中常用指令

我们在上述实验环境中测试

# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
git merge [branch]
# 删除分支
git branch -d [branch-name]
# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

8.2、IDEA中分支操作

我们也可以在IDEA中查看分支,并进行相应的操作

项目右键,点击Git,然后点击Repository,然后点击Branches

然后弹出以下分支信息

然后我们可以在指定分支右键进行相应的分支操作

如果同一个文件在合并分支时都被修改了则会引起冲突

  • 解决办法:我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。



9、Git相关资料

在Gitee中有关于Git的相关资料,大家可以自行查看

  • Git大全:https://gitee/all-about-git
  • Git命令大全:https://oschina.gitee.io/learn-git-branching/

本文标签: 最新版从零开始教程详细Git