

文章目录
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 的三个区域
⼯作区(代码编辑区)暂存区(暂时存储区)版本区(版本控制区)
**工作区、暂存区、版本区,三个区共同组成了⼀个
Git 仓库
**
基本操作流程
- 在项目根目录下执行
git init初始化命令 会生成一个.git文件夹,这样就成功的初始化了一个本地仓库,而此时根目录下的文件就处于工作区
git init
- 执行命令
git add [file],可以指定将某个指定文件提交到暂存区,同时也可以执行以下三种命令之一,将工作区的所有文件都提交到暂存区
git add -A
git add *
git add .
- 执行命令
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 --onelinegit log --oneline在git log的基础上提供更简洁的版本提交记录
git log --oneline

git refloggit 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来查看当前仓库下存在哪些分支,初始默认情况下,我们的默认主分支为master或main,这时候我们使用git branch <分支名>,就可以成功创建一个分支了。

**
值得注意
:**
**在项目初始化的时候,如果就想立即建立一个衍生分支,则需要保证当前的主分支至少进行了一次
commit版本提交,否则可能会报错
fatal: not a valid object name: 'master'。遵循着所有的
衍生分支都必须处于
主分支的版本下继承诞生,如果初始化的时候,
主分支都还没
commit诞生版本,这个时候对于版本区来说
主分支都还没有诞生,那么依赖于主分支的
衍生分支这时候自然也是无法创建的。**
**所以:当
衍生分支
创建后,提交记录并不是空的,依然保留继承着截止创建
衍生分支
时,
主分支
当前最新的提交记录。所继承主分支最新提交的这次版本记录,被称为
基点
**
- 创建分支后,可以使用
git checkout <分支名>命令来切换当前的分支。
**
注明:
**
- 在切换分支之前,需要将当前分支管理好,最好进行
git add或git 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)是用来指向特定提交的引用,通常用于
标记项目中的重要点,比如版本发布。标签分为两种类型:**
- 轻量标签(Lightweight)
**轻量标签只是
简单地指向描述一个提交,不包含其他信息,创建轻量标签不会存储任何额外的信息。**
- 附注标签(Annotated)
**附注标签存储了
额外的信息,例如:
标签名、标签信息、创建者名字、电子邮件、创建日期等。因为它们包含了更多的信息,附注标签更
适用于公共或正式发布的场合,比如软件版本的发布。**
创建标签
命令描述**
git tag 标签名 版本号
****给指定提交打
轻量标签
git tag -a 标签名 版本号 -m "标签描述"
****给指定提交打
附注标签
git tag
查看标签
git show 标签名
查看标签信息
git tag -d 标签名
删除标签
**
游离分支
**
git checkout也可以将代码
签出到指定版本,即可以执行
git checkout 具体版本号,当签出到
指定提交版本时,签出的代码出于一个临时的游离分支中,如下图操作**

**
值得注意:
(
重要
)**
**在游离分支上也可以对代码进行版本控制,但要特别注意:一旦从
游离分支切走
,游离分支的
提交不会交给任何一个分支
,因为它是
临时
的,所以对于游离分支我们的使用原则是:**
- 要尽量避免
修改游离分支的代码(只是看一看某个版本的代码) - 若确实需要修改游离分支代码,应该从当前游离分支,创建出一个新的分支,随后去修改
- 若修在游离分支上发生了提交,随后从游离分支切走了,就要使用
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 -r或gir 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
**克隆远程仓库
🚵♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————
版权归原作者 旧梦星轨 所有, 如有侵权,请联系我们删除。