0


分布式版本控制工具 Git 的使用方式

在这里插入图片描述

在这里插入图片描述

文章目录

Git简介

**

Git 

是一款免费的开源

分布式版本控制系统

,旨在快速高效地处理从小型到超大型项目的所有项目。它可以

追踪文件的更改

,并能

多人协同开发

。Git 是目前最流行的版本控制系统,其主要功能包括:**

  • 代码备份
  • 版本控制
  • 多人协作
  • 权限控制

下载安装

下载地址 Git官网下载地址

在这里插入图片描述


基本使用

起始配置

  • 第⼀次使用 Git 的时候,我们需要配置姓名和邮箱,让Git 知道当前开发者的基本信息- 配置姓名:
git config --global user.name "User Name"
    • 配置邮箱:
git config --global user.email "email...com"

**

备注

:****可以使⽤

git config --list

git config -l

命令来

查看配置信息。

**


Git 的三个区域

  1. ⼯作区(代码编辑区)
  2. 暂存区(暂时存储区)
  3. 版本区(版本控制区)

**工作区、暂存区、版本区,三个区共同组成了⼀个

Git 仓库

**


基本操作流程

  1. 在项目根目录下执行 git init 初始化命令 会生成一个 .git 文件夹,这样就成功的初始化了一个本地仓库,而此时根目录下的文件就处于工作区
git init
  1. 执行命令 git add [file],可以指定将某个指定文件提交到暂存区,同时也可以执行以下三种命令之一,将工作区的所有文件都提交到暂存区
git add -A

git add * 

git add .
  1. 执行命令 git commit -m '提交的备注'暂存区的所有文件提交到版本控制区,这时候,这个文件就真正的受到了 Git 的版本控制,并生成了一个独一无二的版本记录
git commit -m "提交了a文件"

流程图示:
在这里插入图片描述


查看仓库状态

  • 执行 git status 命令⽤于显示仓库当前的状态git status -s 也⽤于查看仓库状态,但提示更为简短。

**初始化仓库后,若

还没有项目文件

或需要提交的内容,则提示如下:**

在这里插入图片描述

**如果此时

工作区

有一个文件,还没有提交

暂存区

则会提示:**
在这里插入图片描述

**若

暂存区

已有内容但是还

没有

提交

版本区

,提示如下:**

在这里插入图片描述


删除(撤销暂存区)

运行以下命令:

git rm --cached <file>//撤销暂存区指定文件

git rm --cached -r .//撤销暂存区所有文件

差异对比

运行以下命令:

**

git diff 

用于 对比 :

工作区

vs

暂存区

**

**

git diff --cached

用于 对比 :

版本区

vs

暂存区

**


查看版本日志

借助于以下命令可以查看 git 的 整个版本提交记录

  • git log
git log

在这里插入图片描述

  • git log --oneline
  • git log --onelinegit log 的基础上提供更简洁的版本提交记录
git log --oneline

在这里插入图片描述

  • git reflog
  • git reflog 可以提供更加完整的版本提交记录
git reflog

在这里插入图片描述


版本回退

**当我们在

git

中提交创建了多个

版本记录

时,我们就可以在这些

多个版本之间

任意的

切换回到不同的版本

时间点。**

  • 使用 git reset --hard 命令进行版本之间的切换回滚
git reset --hard [版本号]

**

值得注意

使用

git reset --hard

切换版本后会有以下操作:**

  • 切换版本区 HEAD 指针指向
  • 还原暂存区 到对应版本
  • 还原工作区 到对应版本

**所以在执行

git reset --hard

切换版本之前 ,需要通过

git add

git commit

清空当前

工作区

以及

暂存区

之后再进行版本切换**

  • --soft重置 HEAD 到指定提交,所有的更改都会自动添加到暂存区,对工作区无影响
  • --mixed: (默认值):重置HEAD到指定的提交,并且重置暂存区,对工作区无影响
  • --hard重置 HEAD 到指定的提交,并且重置暂存区,重置工作区

修改提交日志

**当有时候我们进行了一次

commit

的版本提交,这时候如果想对最近的一次提交日志做出更改可以用以下命令:**

**命令:

git commit --amend

**

  • 命令可以重新编辑最近一次的版本提交日志
  • 将新的更改合并到最近一次的提交中

**如果想将当前的更改,合并到最近上一次的更改记录中,而不是形成一个新的提交记录,只需要先将当前工作区的文件

git add

添加到暂存区,再使用

git commit --amend -m "日志"

,添加合并到上一次提交中,这样一来

两次提交就共享一次提交记录

**


分支

概念:

**

分支

是 Git 的一个重要的特征,它可以使开发人员,从

主分支上衍生出多个独立的分支

,最后可以选择性的将衍生分支决定是否合并到主分支上**

创建分支与切换分支

  • 在创建分支之前,我们可以使用命令 git branch 来查看当前仓库下存在哪些分支,初始默认情况下,我们的默认主分支为 mastermain,这时候我们使用 git branch <分支名>,就可以成功创建一个分支了。

在这里插入图片描述

**

值得注意

:**

**在项目初始化的时候,如果就想立即建立一个衍生分支,则需要保证当前的主分支至少进行了一次

commit

版本提交,否则可能会报错

fatal: not a valid object name: 'master'

。遵循着所有的

衍生分支

都必须处于

主分支

的版本下继承诞生,如果初始化的时候,

主分支

都还没

commit

诞生版本,这个时候对于版本区来说

主分支

都还没有诞生,那么依赖于主分支的

衍生分支

这时候自然也是无法创建的。**

**所以:当

衍生分支

创建后,提交记录并不是空的,依然保留继承着截止创建

衍生分支

时,

主分支

当前最新的提交记录。所继承主分支最新提交的这次版本记录,被称为

基点

**

  • 创建分支后,可以使用 git checkout <分支名> 命令来切换当前的分支。

**

注明:

**

  • 在切换分支之前,需要将当前分支管理好,最好进行 git addgit commit,清空当前工作区或暂存区。
  • 切换分支后,工作区和暂存区会受到相应的影响。表现为:- 工作区:会变成切换到的当前分支最后一次提交状态- 暂存区:同上,并且如果当前暂存区有未提交的更改,那么这些更改会被带到新分支的暂存区上

合并分支(快速合并)

  • 如果我们当前版本存在两个分支,master test 分支,且这时候 test 分支领先于 master 分支,同时 test 分支继承了 master 分支的全部版本记录,这时候就可以触发 快速合并
  • 合并分支的时候需要先将分支切换到,想要合并的到的目标分支,然后执行 git merge test 命令将 test 分支的版本内容合并到 master 分支,合并成功后,工作区 也会看到 test 分支的内容了,同时也可以看到合并后的版本提交记录了。

合并分支(提交合并)

**如果当要合并的两个分支,出现

不一致的版本

的时候,则会在拿到

当前分支最新版本的提交 和 想要合并分支的最新版本提交

,在当前分支形成一个

新的版本

提交记录,这时候需要手动补充新版本的提交日志描述,合并指令同上。**


删除分支

git branch -d  <分支名>//删除分支
git branch -D<分支名>// 强制删除分支

**

备注说明:

**

**删除分支的时候,我们需要

切出要被删除的分支

,同时如果,当我们要删除的分支上的文件发生变化后,在删除的时候,可能会发出警告,这时候我们有以下几种处理方式:**

  • 第一种方式:将要删除的分支合并到一个其他的分支,再进行删除.
  • 第二种方式:使用 git branch -D xxx 强制删除。
  • 第三种方式:使用 git config advice.forceDeleteBranch false 命令关掉该提示。

分支变基

**所谓的

变基

其实就是把

当前分支的提交记录与目标分支(主分支)的最新的提交记录做线性合并

,也可以理解为把

当前分支与主分支分离时的那次提交记录,变化成主分支的最新一次提交记录

,这样

当前分支就也具备了主分支的所有提交记录加上当前分支的所有提交记录,并作一个线性记录

展示。**

命令

git rebase <需要变基的目标分支,多用于主分支 master >

tag 【标签】

**在 Git 中,标签(Tag)是用来指向特定提交的引用,通常用于

标记项目中的重要点

,比如版本发布。标签分为两种类型:**

  1. 轻量标签(Lightweight)

**轻量标签只是

简单地指向描述一个提交

,不包含其他信息,创建轻量标签不会存储任何额外的信息。**

  1. 附注标签(Annotated)

**附注标签存储了

额外的信息

,例如:

标签名、标签信息、创建者名字、电子邮件、创建日期

等。因为它们包含了更多的信息,附注标签更

适用于公共或正式发布

的场合,比如软件版本的发布。**

创建标签
命令描述**

git tag 标签名 版本号

****给指定提交打

轻量标签

git tag -a 标签名 版本号 -m "标签描述"

****给指定提交打

附注标签

git tag

查看标签

git show 标签名

查看标签信息

git tag -d 标签名

删除标签

**

游离分支

**

git checkout

也可以将代码

签出到指定版本

,即可以执行

git checkout 具体版本号

,当签出到

指定提交版本

时,签出的代码出于一个临时的游离分支中,如下图操作**

在这里插入图片描述

**

值得注意:

重要

)**

**在游离分支上也可以对代码进行版本控制,但要特别注意:一旦从

游离分支切走

,游离分支的

提交不会交给任何一个分支

,因为它是

临时

的,所以对于游离分支我们的使用原则是:**

  1. 要尽量避免修改游离分支的代码(只是看一看某个版本的代码)
  2. 若确实需要修改游离分支代码,应该从当前游离分支,创建出一个新的分支,随后去修改
  3. 若修在游离分支上发生了提交,随后从游离分支切走了,就要使用 reflog 寻找游离分支的提交

GitFlow

**

GitFlow 【分支模型】

是团队协作开发的一种最佳实践方式之一,将代码划分为以下几个分支**

分支描述对应环境**

master

主分支

,只保存

正式发布

的代码****

 生产

环境****

develop

开发分支

,开发者的编写的代码最终要

汇总在这个分支

 开发

环境****

hotfix

线上紧急修复分支

,修复完毕后要合并回

master 

develop 

分支,同时在

master

分支上打一个

tag 标签

 开发

环境****

release

预发布分支

Release

分支基于

Develop

分支创建,在这个

Release

分支上测试****

 测试

环境****

feature

功能分支

,当开发某个功能时创建一个单独的分支,开发完毕后再合并到

develop

分支****

 开发

环境**

远程仓库

关联远程仓库

第一步:首先维护好本地仓库再进行远程管理(所有文件均接受版本控制)。

第二步:注册并激活 Gitee或 Github 账号。

第三步:创建远程仓库,并获取仓库的地址。

第四步:配置本地仓库关联远程仓库

git remote add origin https://xxxx/xxxx/xxxxx.git

**

注明:

**

  • 查看当前仓库关联远程仓库地址:git remote -v
  • 更改远程仓库的 URL:git remote set-url origin 新的仓库URL
  • 删除与远程仓库的关联:git remote remove origin

推送远程

git push -u origin master

**

备注说明:

**

  • push 表示推送。
  • -u(upstream) 表示关联,加上 -u 以后,后续提交时可以直接使用 git push 即可。
  • origin 远端仓库的别名。
  • master 要推送到的远程目标分支,建议和当前本地分支同名。

拉取远程分支代码

**当本地仓库想获得远程仓库的最新修改时,可以使用

git pull

命令拉取远端代码。**

git pull   

**

说明:

**

**备注:

git pull 

会将远端代码

自动执行合并操作

,即:将

远程分支的修改合并到本地当前分支

。**

关于冲突

  • 合并/变基引起的冲突:两个分支在同一文件的同一位置都有修改时,合并或变基时会引起冲突。
  • 拉取引起的冲突:不同的开发者修改了同一文件的同一位置都有修改时,拉取代码会有冲突。克隆远程库

克隆远程库

获取一个远程仓库的地址,随后执行克隆命令

git clone https://xxxx/xxxx/xxxx.git

**

注意:

**

**默认这样直接克隆下来的是包含

整个仓库的所有分支

以及各分支段的

所有提交记录

**

  • 克隆下来的仓库,使用 git branch 命令,只能看到默认分支其他分支其实也已经克隆下来了,但不出现在 git branch 列表中,需要使用 git branch -rgir branch -a 来查看。

在这里插入图片描述

  • 需要切换到其他分支时,可以直接 git checkout -b xxx origin/xxx 来进行切换,当然对于 1.7.0 以后的 git 版本,也可以使用简短的命令:git checkout xxx 来切换。

**还使用

--depth 1

参数可以克隆仓库的

最近一次提交

,这样可以减少克隆所需的时间和空间。**

git clone --depth 1https://xxxx/xxxx/xxxx.git

**通过

-b <指定分支名> --single-branch

可以获取远程仓库的某一个

指定分支

**

git clone -b <指定分支名>--single-branch https://xxxx/xxxx/xxxx.git

**也可以将

-b <指定分支名> --single-branch --depth 1

结合使用克隆

指定分支的最新一次提交

**

git clone -b <指定分支名>--single-branch --depth 1https://xxxx/xxxx/xxxx.git

本文 Git 命令汇总

命令描述**

git config --global user.name "User Name"

初始化配置用户名

git config --global user.email "email...com"

初始化配置邮箱

git init

初始化 Git 仓库

git add -A
git add -.
git add -*

将工作区所有文件添加到暂存区

git commit -m "日志"

将暂存区的所有文件提交到版本区

git status
git status -s

查看当前仓库的状态

git rm --cached <文件名>

****撤销暂存区

指定

文件****

git rm --cached -r .

****撤销暂存区

所有

文件****

git diff 

****差异对比

工作区

暂存区

git diff --cached

****差异对比

版本区

暂存区

git log
git log --oneline
git reflog*

查看当前分支的版本提交记录

git reset --hard [版本号]

版本回退

git branch

查看当前有哪些分支 / 创建一个分支

git checkout <分支名>

切换到指定的分支

git merge <要与其合并的分支名>

将指定的分支与当前所在的分支做合并

git branch -d <分支名>

删除指定的分支

git rebase <要将当前分支变基到的目标分支名>

分支变基

git tag 标签名 版本号

****给指定提交打

轻量标签

git tag -a 标签名 版本号 -m "标签描述"

****给指定提交打

附注标签

git tag

查看标签

git show 标签名

查看标签信息

git tag -d 标签名

删除标签

git checkout <提交版本号>

签出一个临时的游离分支

git remote add <远程仓库别名> <远程仓库地址> 

将本地仓库关联到一个远程仓库

git remote -v

查看所关联远程仓库

git remote set-url 

更改远程仓库

git remote remove <远程仓库别名> 

删除远程仓库

git push -u origin master

将本地仓库分支推送到远程仓库分支

git pull

拉取远程仓库分支

git clone 

**克隆远程仓库
在这里插入图片描述


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————

标签: 分布式 git gitee

本文转载自: https://blog.csdn.net/qq_60961397/article/details/137249767
版权归原作者 旧梦星轨 所有, 如有侵权,请联系我们删除。

“分布式版本控制工具 Git 的使用方式”的评论:

还没有评论