通俗易懂学Git---强大的版本控制

1 版本管理

在开发的过程中用于管理对文件、目录或工程等内容的修改历史,方便查看历史记录,备份以便恢复以前的版本的软件工程技术

1.1 版本控制分类

1.1.1 本地版本控制

在这里插入图片描述
说明:版本更新库和使用版本库的文件都在同一个主机中,只需要通过checkout取出相应的版本

1.1.2 集中版本控制

  1. 所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
  2. 用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本
  3. 所有数据都保存在单一的服务器上,如果这个服务器会损坏(有很大的风险), 这样就会丢失所有的数据,需要定期备份
    在这里插入图片描述

1.1.3 分布式版本控制

  1. 所有版本信息仓库全部同步到本地的每个用户
  2. 可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时 push 到相应的服务器或其他用户那里。
  3. 每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据
  4. 更加安全, 不会因为服务器损坏或者网络问题,造成不能工作的情况
    在这里插入图片描述

2 Git 下载&安装

  1. 地址: https://git-scm.com/
  2. 下载版本: Git-2.33.0.2-64-bit.exe
  3. 下载慢,可以到镜像下载 : http://npm.taobao.org/mirrors/git-for-windows/

2.1 安装

  1. 说明:直接下一步即可,建议安装到非系统盘, 比如 d:\
  2. 细节:安装路径不要带中文、空格、特殊字符
  3. 验证安装是否成功(右键)
    在这里插入图片描述

3 Git 资料

  1. Git大全
  2. Git 常用命令
    仓库
    配置
    增加删除文件
    代码提交
    分支
    标签
    查看信息
    远程同步
  3. Git互动小游戏

4 Git 基本配置

4.1 设置用户名与邮箱

  1. 安装 Git 后, 首先要设置你的用户名称和 e-mail 地址, 因为每次 Git 提交都会使用该信息
  2. 指令
#用户名
git config --global user.name "hspedu" 
#邮箱
git config --global user.email "hspedu@xx.com"
  1. 指令成功执行,会生成 C:\Users\Administrator.gitconfig, 信息如下
    查看当前用户配置:git config --global --list
    在这里插入图片描述
    或者:git config -l —查看所有配置

4.2 Git 的配置文件

  1. system 配置文件
    Git\etc\gitconfig :Git 安装目录下的 gitconfig
  2. global 全局文件
    C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置,可以手动进行修改
    在这里插入图片描述

5 Git 工作原理[重要]

5.1 四个工作区域

Git 本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库
(Repository 或 Git Directory)。如果再加上远程的 git 仓库(Remote Directory)就可以分为四个
工作区域。文件在这四个区域之间的转换关系如下
在这里插入图片描述

  1. Workspace:工作区,就是你平时存放项目代码的地方
  2. Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  3. Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本
  4. Remote:远程仓库,托管代码的服务器(比如 Github/Gitee),可以简单的认为是你项目组中的一台电脑用于远程数据交换

5.2 工作流程

  1. 在工作目录中添加、修改文件;
  2. 将需要进行版本管理的文件放入暂存区域;
  3. 将暂存区域的文件提交到 git 本地仓库。
    因此,git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
    在这里插入图片描述

6 Git 仓库创建

6.1 创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望 Git 帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文(clone也会体现到workspace上面
在这里插入图片描述

6.2 本地仓库-创建

6.2.1 创建全新的仓库(git init

演示在本地创建全新仓库 d:\hspgit

  1. 创建目录 d:\hspgit 作为本地 git 仓库
  2. 右键
    在这里插入图片描述
  3. 执行 git init
    在这里插入图片描述
  4. 执行后可以看到,仅仅在项目目录多出了一个.git 目录,关于版本等的所有信息都在这个目录里面
    在这里插入图片描述

6.2.2 克隆远程仓库($ git clone [url] # url 就是远程 git 项目的地址)

演示在本地克隆远程仓库 d:\hspgit2。说明: 克隆远程代码仓库,就是将远程服务器上的仓库完全镜像一份至本地

7 Git 文件管理

7.1 文件四种状态

● 版本控制就是对文件的版本控制,在 Git 管理中,文件被统一管理,有四个状态

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

7.2 文件操作指令

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

  1. 先在 D:\hspgit2\lunar-javascript , 创建一个测试文件 ABC.txt,并查看状态
    在这里插入图片描述
  2. 查看所有文件状态:git status
  3. 添加当前目录的所有文件到暂存区:git add .
    在这里插入图片描述
  4. 提交暂存区中的内容到本地仓库:git commit -m "消息内容"
    在这里插入图片描述

8 Gitee 创建代码仓库

8.1 设置本机绑定 SSH 公钥,实现免密登录

  1. 进入 C:\Users\Administrator.ssh , 没有就手动创建该文件夹

  2. 如果该目录下有相应文件,先删除(第一次操作是没有的)
    在这里插入图片描述

  3. 执行指令 ssh-keygen , 生成文件(说明:直接回车即可), ssh-keygen 指令更多说明:
    https://blog.csdn.net/weixin_37335761/article/details/120146098 比如: ssh-keygen -t rsa
    -C ‘hello@qq.com’ -f ~/.ssh/github_id_rsa
    在这里插入图片描述
    在这里插入图片描述

  4. 将公钥信息 public key 添加到码云账户
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

9 IDEA 项目使用 Git 管理

9.1 将 gitee 创建的 hspjava 项目拉取到 IDEA,进行管理

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

9.1.1 创建项目进行测试

在这里插入图片描述

  1. 将 HI.java add 到 git, 说明:将 HI.java 加入到暂存区(文件由红色变为绿色
    在这里插入图片描述
  2. 将 HI.java commit 到 git(这里会要求你添加描述,文件颜色由绿变蓝)
  1. commit 只是将 HI.java 提交到本地仓库
  2. 并没有 push 到远程仓库(即 GitHub/Gitee)
    在这里插入图片描述
  1. 将 HI.java push 到 Gitee , 会输入用户名密码验证(是 Gitee 的账号).
    在这里插入图片描述

  2. 观察 Gitee 上项目的变化

9.2 创建了一个 IDEA 项目(没有从 Gitee拉取), 后面又希望和 Gitee的某个代码仓库关联,如何操作?

  1. 在 Gitee 创建一个仓库,比如 hsp-sns
    在这里插入图片描述
  2. 创建一个 springboot /maven 项目 hsp-sns
    在这里插入图片描述
    此时,这个项目没有被git接管,上面的改变不会影响码云
  3. 克隆 gitee 的 hsp-sns 到 d:/git-hsp-sns
  4. 将克隆下拉的 hsp-sns 的文件,拷贝到 IDEA 对应项目中
    在这里插入图片描述
    在这里插入图片描述
  5. 刷新,或者重启 IDEA 项目
  6. 创建文件 D:\java_projects\hsp-erp\src\main\java\com\hspedu\hspsns\Hello.java
  7. 完成 add, commit , push 一系列操作

9.2 如何查看操作记录

在这里插入图片描述
切换到对应的版本:checkout

9.3 一个 IDEA 项目(从 Gitee clone), 后面又希望获取 Gitee 的代码仓库最新代码, 如何操作?pull

  1. 这个需要将光标放到项目上面
  2. pull代码之后,会出现问题:环境问题–》解决:光标放到项目上面–>projectstructure–>点到java–>右键source–>解决

10 GIT 分支管理

在这里插入图片描述

  1. 分支可以有多个(根据业务需求)
  2. 如果各分支没有交集,始终平行发展,则不需要合并(merge)
  3. 如果两个分支,需要合并(一般开发主线是稳定的版本,其他功能测试成功后再合并到主分支),则执行 merge 操作

10.1 案例实践

10.1.1 环境搭建

  1. 先在 Gitee 创建仓库 hsp-erp, 并设置成开源
  2. 在新的目录比如 d:/idea_projects 使用 idea 创建 hsp-erp maven, 并和 Gitee 仓库 hsp-erp
    关联
  3. 创建文件 HspErpApplication.java , 写入一些内容
  4. 将 HspErpApplication.java push 到 Gitee 远程仓库 , 执行 add->commit->push
  5. 观察 Gitee 远程仓库是否已经 push 成功

10.1.2 git 分支指令

地址

10.1.3 IDEA 项目创建分支

  1. 创建分支
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 把分支同步到 Gitee 远程仓库
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 查看远程仓库
    在这里插入图片描述

10.1.4 IDEA 项目切换分支, 进行工作

  1. 切换分支(指令 checkout)
    在这里插入图片描述
    在这里插入图片描述
  2. 在 v2.0 分支下 , 我们修改/增加一下文件, 就是针对当前 v2.0 的
    在这里插入图片描述
  3. 把 HspErpApplication.java Add->Commit->Push 到 Remote 仓库, 按照老师步骤来.
  4. 观察 Gitee 的远程仓库变化
    在这里插入图片描述
    在这里插入图片描述
  5. 观察本地仓库 版本切换的变化
    在这里插入图片描述
    在这里插入图片描述

10.1.5 IDEA 项目分支合并, 没有冲突的情况

● 在进行分支合并时, 如果没有冲突(比如没有修改同一个文件), 这时会比较顺畅.

  1. 案例演示/需求说明: 将分支 v3.0 合并到 Master 主分支(在master开分支,就右键master创建分支,该分支就是master的复制品)
  2. 从 master 开一个分支 v3.0, 在 v3.0 增加一些文件, 不在 master 和 v3.0 修改同一个文件(也就是说增加的文件是master没有的)
  3. 将分支 v3.0, 同步到 Gitee 远程仓库, 操作步骤和前面一样开 v2.0 一样
  4. 切换到 v3.0, 并增加一个文件 Hi.java, 并 Add->Commit->Push 到远程仓库
  5. 注意看 Master 主分支,在本地仓库和远程仓库, 都没有 Hi.java
  6. 将 v3.0 合并到 Master 分支, 注意当前是 Master 主分支(看图标)(也就是说要checkout到主分支)
    在这里插入图片描述
    在这里插入图片描述
  7. 注意看 Master 主分支,这时在本地仓库, 有 Hi.java , 但是远程仓库还没有
    在这里插入图片描述
  8. 将本地的 Master 分支, Push 到远程仓库, 这时观察远程仓库 Master 下也有 HI.java 了

10.1.6 IDEA 项目删除分支

  1. 如果某个分支不需要了, 可以删除, 一定要慎重
    在这里插入图片描述
    在这里插入图片描述
  2. 注意观察远程仓库, 分支 V3.0 也没有了
    在这里插入图片描述
  3. 只删除本地分支, 还可以重新获取
    获取方法:项目–右键–git–repository–brabches–选中要获取的分支

10.2 注意事项和细节说明

  1. 在进行分支合并时, 最好是各分支都已经处于 Committed 的状态, 这样可以减小处理合并冲突的难度.
  2. Push 操作, 是 Push 你已经 Committed 的代码, 如果你修改了一个文件, 但是你没有执行Commit ,那么你 Push 的其实是上次 Committed 的状态
  3. add 、 commit 、push 的操作可以针对单个文件, 也可以针对文件夹
  4. 文件要 Commit 前需要先 Add 到 暂存区 , 以后文件修改了, 就可以直接 Commit
  5. 如果要删除文件, 可以在本地删除该文件, 然后 commit 文件所在文件夹即可, 并重新push 该分支, 那么在远程仓库, 也会删除对应分支的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值