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 仓库的两种方式

  1. 在本地计算机中,将尚未进行版本控制的 项目 本地目录转换为 Git 仓库
  2. 从其它服务器 克隆 一个已存在的 Git 仓库

2. git init 在现有目录中初始化仓库

如果自己有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,需要执行如下两个步骤:

  1. 在项目根目录中,通过鼠标右键打开Git Bash
  2. 执行 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功能:

  1. 可以用它 开始跟踪新文件
  2. 已跟踪的、且已修改 的文件放到暂存区
  3. 把有冲突的文件标记为已解决状态

使用命令 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 仓库中移除文件的方式有两种:

  1. 通过git rm -f 指定文件名 : 从 Git 仓库和工作区中同时移除对应的文件
  2. 通过git rm --cached 指定文件名 : 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件

比如:
在这里插入图片描述


15. 忽略文件

总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,可以创建一个名为 .gitignore配置文件,列出要忽略的文件的匹配模式。

文件 .gitignore 的格式规范如下:

  1. #开头的是注释
  2. / 结尾的是目录
  3. / 开头防止递归
  4. ! 开头表示取反
  5. 可以使用 glob 模式 进行文件和文件夹的匹配

glob 模式

所谓的 glob 模式是指简化了的正则表达式:

  1. 星号*匹配 零个或多个任意字符
  2. [abc] 匹配 任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)
  3. 问号?匹配一个任意字符
  4. 在方括号中使用 - (短划线) 分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)
  5. 两个星号**表示 匹配任意中间目录(比如 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 基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程