Git 基础
2022/1/28 6:06:44
本文主要是介绍Git 基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
@
目录- 一、安装并配置 Git
- 1. 在 Windows 中下载并安装 Git
- 2. 配置用户信息
- Git 的全局配置文件
- 命令行中检查配置信息
- 获取帮助信息
- 二、Git 的基本操作
- 1. 获取 Git 仓库的两种方式
- 2. git init 在现有目录中初始化仓库
- 3. 工作区中文件的 4 种状态
- 4. git status 检查文件的状态
- 5. git status -s 以精简的方式显示文件状态
- 6. git add 多功能命令
- 7. git commit 提交更新
- 8. 对已提交的文件进行修改
- 9. 暂存已修改的文件
- 10. 提交已暂存的文件
- 11. 撤销对文件的修改
- 12. 向暂存区中一次性添加多个文件
- 13. git reset HEAD 取消暂存的文件
- 14. 跳过使用暂存区域
- 14. 移除文件
- 15. 忽略文件
- glob 模式
- .gitignore 文件举例
- 16. git log 查看提交历史
- 17. git reset 回退到指定的版本
- 三、Git 分支
- 1. 简介
- 2. master 主分支
- 3. 功能分支
- 4. 查看分支列表
- 5. 创建新分支
- 6. 切换分支
- 7. 分支的快速创建和切换
- 8. 合并分支
- 9. 删除本地分支
- 10. 遇到冲突时的分支合并
- 11. 将本地分支推送到远程仓库
- 12. 查看远程仓库中所有的分支列表
- 13. 跟踪分支
- 14. 拉取远程分支的最新的代码
- 15. 删除远程分支
一、安装并配置 Git
1. 在 Windows 中下载并安装 Git
在开始使用 Git 管理项目的版本之前,需要将它安装到计算机上。可以使用浏览器访问如下的网址,根据自己的操作系统,选择下载对应的 Git 安装包:https://git-scm.com/downloads
Git安装教程——挣扎的工程师的博客-CSDN博客
2. 配置用户信息
安装完 Git 之后,首先要设置自己的 用户名 和 邮件地址。因为通过 Git 对项目进行版本管理的时候,Git 需要使用这些基本信息,来记录是谁对项目进行了操作
进入 Git Bash
:
- 全局设置用户名:
$ git config --global user.name "username"
- 全局设置用户邮箱:
$ git config --global user.email "userEmail"
注意:如果使用了 --global
选项,那么该命令进行全局配置,只需要运行一次,即可永久生效。
Git 的全局配置文件
通过 git config --global user.name 等 全局配置的操作信息会被写入到 C:/Users/用户名文件夹/.gitconfig
文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。该文件可以通过记事本打开。
命令行中检查配置信息
除了使用记事本查看全局的配置信息之外,还可以运行如下的终端命令,快速的查看 Git 的全局配置信息:
- 查看所有全局配置项
$ git config --list --global
- 查看指定的全局配置项
$ git config user.name
获取帮助信息
可以使用 git help <verb>
命令,无需联网即可在浏览器中打开帮助手册,例如:
- 开打 git config 命令的帮助手册
$ git help config
完整的手册比较详细,也可以用git <verb> -h
选项获得更简明的“help”输出在控制台:
- 获取 git config 命令的快速参考
$ git config -h
二、Git 的基本操作
1. 获取 Git 仓库的两种方式
- 在本地计算机中,将尚未进行版本控制的 项目 本地目录转换为 Git 仓库
- 从其它服务器 克隆 一个已存在的 Git 仓库
2. git init 在现有目录中初始化仓库
如果自己有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,需要执行如下两个步骤:
- 在项目根目录中,通过鼠标右键打开
Git Bash
- 执行
git init
命令将当前的目录转化为 Git 仓库
git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前 项目的 Git 仓库,里面包含了 初始的必要文件,这些文件是 Git 仓库的必要组成部分。
3. 工作区中文件的 4 种状态
工作区中的每一个文件可能有 4 种状态,这四种状态共分为两大类,如图所示:
Git 操作的终极结果:让工作区中的文件都处于 “未修改” 的状态。
4. git status 检查文件的状态
可以使用 git status
命令查看文件处于什么状态,例如:
在状态报告中可以看到新建的 index.html
文件出现在 Untracked files
(未跟踪的文件) 下面。
未跟踪的文件意味着 Git 在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非明确地告诉它“我需要使用 Git 跟踪管理该文件”。
文件状态列表:
Untracked files
: 未跟踪 的文件changes to be committed
: 已被跟踪 并处于 暂存状态 的文件Changes not staged for commit
: 已跟踪 ,内容发生了变化,但还没有放到暂存区 的文件
5. git status -s 以精简的方式显示文件状态
使用git status -s
输出的 精简的状态报告,其中 -s
是 --short
的简写形式:
文件状态表示符:
- 红色
??
: 未跟踪状态 的文件 - 绿色
A
: 已被跟踪 并处于 暂存状态 的文件 - 红色
M
:已跟踪 ,内容发生了变化,但还没有放到暂存区 的文件 - 绿色
M
: 表示文件 已修改 且 已放入暂存区 - 绿色
D
: 表示在 工作区 和 Git仓库中 的该文件已被删除
6. git add 多功能命令
git add
功能:
- 可以用它 开始跟踪新文件
- 把 已跟踪的、且已修改 的文件放到暂存区
- 把有冲突的文件标记为已解决状态
使用命令 git add 指定文件名
开始跟踪一个文件, 比如:
7. git commit 提交更新
执行 git commit
命令 把 暂存区中 的文件 提交到 Git 仓库中进行保存
其中 -m
选项后面是本次的提交消息,用来对提交的内容做进一步的描述:
文件提交之后查看文件状态,输出结果表示: 工作区中所有的文件都处于 “未修改” 的状态,没有任何文件需要被提交。
8. 对已提交的文件进行修改
当文件已经被 Git 跟踪,并且 工作区和 Git 仓库 中的 该文件内容保持一致。当我们修改了工作区中 该文件 的内容之后,通过 检查文件状态 ,会看到如下的内容:
9. 暂存已修改的文件
工作区中 当文件处于 已跟踪 并 被修改,通过 git add 指定文件名
把该文件 放到 暂存区 中
10. 提交已暂存的文件
当 文件被修改过并处于暂存区中,处于 Staged
状态时,再次通过命令 git commit -m "提交消息"
将暂存区中记录的 该文件 的快照,提交到 Git 仓库中进行保存
11. 撤销对文件的修改
撤销对文件的修改指的是:把对工作区中对应文件的修改,还原成 Git 仓库中所保存的版本,比如
撤销操作的本质:用 Git 仓库中保存的文件,覆盖工作区中指定的文件。
操作的结果:所有的修改会丢失,且无法恢复!危险性比较高,请慎重操作!
12. 向暂存区中一次性添加多个文件
如果需要被暂存的文件个数比较多,可以使用git add .
,一次性将所有的新增和修改过的文件加入暂存区,比如:
13. git reset HEAD 取消暂存的文件
如果需要从暂存区中移除对应的文件,可以使用如下的命令:
git reset HEAD 要移除的文件名称
:移除 暂存区中 的指定文件git reset HEAD .
:移除 暂存区中 的所有文件
比如:
14. 跳过使用暂存区域
Git 标准的工作流程是 工作区 → 暂存区 → Git 仓库,但有时候这么做略显繁琐,此时可以跳过暂存区,直接将工作区中的修改提交到 Git 仓库,这时候 Git 工作的流程简化为了 工作区 → Git 仓库。
通过 git commit -a
,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤,比如:
14. 移除文件
从 Git 仓库中移除文件的方式有两种:
- 通过
git rm -f 指定文件名
: 从 Git 仓库和工作区中同时移除对应的文件 - 通过
git rm --cached 指定文件名
: 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件
比如:
15. 忽略文件
总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,可以创建一个名为 .gitignore
的 配置文件,列出要忽略的文件的匹配模式。
文件 .gitignore 的格式规范如下:
- 以
#
开头的是注释 - 以
/
结尾的是目录 - 以
/
开头防止递归 - 以
!
开头表示取反 - 可以使用 glob 模式 进行文件和文件夹的匹配
glob 模式
所谓的 glob 模式是指简化了的正则表达式:
- 星号
*
匹配 零个或多个任意字符 [abc]
匹配 任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)- 问号
?
只 匹配一个任意字符 - 在方括号中使用
-
(短划线) 分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字) - 两个星号
**
表示 匹配任意中间目录(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
.gitignore 文件举例
# 忽略所有的 .a 文件 *.a # 但跟踪所有的 lib.a ,即便前面已经忽略了所有 .a 文件 !lib.a # 只忽略当前目录下的 TODO 文件,而不是忽略 subdir/TUDO /TUDO # 忽略在任何目录下名为 build 的文件夹 build/ # 忽略 doc/notes.txt , 但不忽略 doc/server/arch.txt doc/*.txt # 忽略 doc/ 目录及其子目录下的 .pdf 文件 doc/**/*.pdf
16. git log 查看提交历史
git log
: 输出提交历史信息git log -数字
: 可指定展示的 提交历史信息 的数量git log -数字 --pretty=oneline
:指定提交历史信息 只在一行上展示git log -数字 --pretty=format:"%h | %an | %ar | %s"
: 自定义输出提交历史信息的输出格式
%h
: 提交的简写哈希值
%an
: 作者的名字
%ar
: 作者修订日期,按多久以前的方式显示
%s
: 提交说明
比如:
17. git reset 回退到指定的版本
git reset --hard <CommitID>
: 更具指定的提交 ID 回退到指定版本git reflog --pretty=onlime
: 在旧版本中擦看提交历史信息
比如:
三、Git 分支
1. 简介
分支是为了助于多人协同开发的项目,比如有如下图的使用场景:
2. master 主分支
在初始化本地 Git 仓库的时候,Git 默认已经帮创建了一个名字叫做master
的分支。通常我们把这个master 分支叫做 主分支。
master 主分支的作用是:用来保存和记录整个项目已完成的功能代码。
因此不建议开发者直接在master分支上修改内容。
3. 功能分支
由于不能直接在 master 分支上进行功能的开发,所以就有了 功能分支 的概念。
功能分支指的是 专门用来开发新功能的分支 ,它是临时从 master 主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到 master 主分支上
4. 查看分支列表
在 Git bash中使用命令 git branch
可以查看当前 Git 仓库中所有的分支列表,比如:
注意:分支名字前面的 *
号表示 当前所处的分支。
5. 创建新分支
使用命令git branch 分支名称
,可以 基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样,如图所示:
比如:
6. 切换分支
使用命令git checkout 分支名称
,可以切换到指定的分支上进行开发,
比如:
7. 分支的快速创建和切换
使用命令:
# -b 表示创建一个新分支 # checkout 表示切换到刚才新建的分支上 git checkout -b 分支名称
可以创建指定名称的新分支,并立即切换到新分支上
如图:
比如:
8. 合并分支
功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master 主分支上:
# 1. 切换到主分支master git checkout master # 2. 在master分支上运行 git merge 命令, 将 功能分支合并到 master分支 git merge login
如图:
注意:假设要把 C 分支的代码合并到 A 分支,则必须先切换到 A 分支上,再运行 git merge 命令,来合并 C 分支!
比如:
9. 删除本地分支
当把功能分支的代码合并到 master 主分支上以后,就可以使用如下的命令,删除对应的功能分支:
git branch -d 分支名称
如图:
比如:
注意:
在没有合并分支的情况下删除分支Git会作出提示,可用命令git branch -D 分支名称
强制删除分支。
10. 遇到冲突时的分支合并
如果在 两个不同的分支中 ,对 同一个文件 进行了 不同的修改,Git 就没法自动合并它们并报出提示。 此时根据提示,需要手动打开这些包含冲突的文件然后 手动解决冲突。
# 假设:在把 B 分支合并到 A 分支期间,Git Bash 报出冲突提示 git checkout A git merge B # 打开包含冲突的文件,手动解决冲突之后,在执行如下命令 git add . git commit -m "解决了分支合并冲突的问题"
比如:
11. 将本地分支推送到远程仓库
如果是首次将本地分支推送到远程仓库,需要运行如下的命令:
# -u 表示把本地分支和远程分支进行关联,只首次推送的时候需要带 -u 参数,远程分支名称可省略 git push -u 远程仓库别名 本地分支名称:远程分支名称
注意:首次推送分支需要带 -u
参数,此后可以直接使用 git push
推送代码到远程分支。
比如:
12. 查看远程仓库中所有的分支列表
通过命令git remote show 远程仓库名字
,可以查看远程仓库中,所有的分支列表的信息,比如:
13. 跟踪分支
跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下:
# 从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程分支名相同 git checkout 远程分支名称 # 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名 git checkout -b 本地分支名称 远程仓库名称/远程分支名称
比如:
14. 拉取远程分支的最新的代码
可以使用命令git push
,从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支的代码一致,比如:
15. 删除远程分支
可以使用如下的命令,删除远程仓库中指定的分支:
# 删除远程仓库中,指定名称的远程分支 git push 远程仓库名字 --delete 远程分支名称
比如:
这篇关于Git 基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门