序言:认识 Git
Git 是一个开源的分布式版本控制系统,用于高效管理文件变更(尤其是代码),记录每一次修改历史,支持多人协作开发。
档详细介绍了 Git 版本控制系统的安装配置、本地仓库操作、分支管理与合并策略以及远程协作流程。内容涵盖环境搭建、常用命令速查、SSH 密钥配置及撤销修复方法,旨在帮助开发者掌握 Git 工具以实现高效的团队协作与代码版本管理。

Git 是一个开源的分布式版本控制系统,用于高效管理文件变更(尤其是代码),记录每一次修改历史,支持多人协作开发。
Git 优势
git diff);(1)官方下载: 下载地址:Git - Downloads(以 Windows 为例)

(2)安装向导: 下载完毕后双击 exe 文件,界面可按需选择或默认下一步即可。

(3)验证安装: 安装完毕后,打开 Git Bash,执行以下命令验证安装,显示版本号证明没有问题。
git --version # 执行结果 git version 2.40.1.windows.1
(1)配置全局用户信息
# 配置 user.name user.email 建议这里的 user.email 使用真实邮箱
$ git config --global user.name "你的用户名"
$ git config --global user.email "你的邮箱地址"
# 查看是否生效
$ cat .gitconfig

(2)配置默认文本编辑器(可选)
# 配置 VS Code
$ git config --global core.editor "code --wait"
# 查看全局配置的文本编辑器
$ git config --global core.editor # 执行结果 code --wait
(3)初始化!创建你的第一个 Git 仓库
# 仓库初始化
$ git init # 执行结果 Initialized empty Git repository in C:/Users/17461/learn/.git/
# 观察隐藏的 .git 文件夹 - Git 的'大脑'
$ cat .git/config # 执行结果说明
[core]
repositoryformatversion = 0 # 仓库格式版本(固定为 0)
filemode = false # 记录文件权限变化(Linux/macOS常用,Windows通常为false)
bare = false # 是否为裸仓库(false表示常规仓库,有工作区)
logallrefupdates = true # 记录所有引用(分支、标签)的更新日志
ignorecase = true # 是否忽略文件名大小写(Windows/macOS常见)
editor = code --wait # 当前仓库单独配置的默认文本编辑器(覆盖全局)
(4)初窥状态:
Changes to be committed: 标题下方,并使用绿色文字显示,已经通过 git add 命令添加到了暂存区# 1. 新建一个测试文件
$ vi test.txt # 保存后查看状态
$ git status # 将文件添加至暂存区
$ git add test.txt

(1)工作区 (Working Directory)
(2)暂存区 (Staging Area)
git add 后的文件存放区(3)版本库 (Repository)
.git 目录下的数据库git commit 的快照)
🔄 记录分支/标签等完整历史(4)Git 三大核心区域的最精简概括

(1)添加(git add)
git add 是将工作区的变更(新增、修改、删除)添加到暂存区的核心命令,是提交前的'预备动作',确保需要记录的变更被 Git 跟踪。
# 仅将指定文件的当前变更(修改 / 新增 / 删除)加入暂存区,其他文件不受影响。
git add <filename>
# 添加当前目录(包括子目录)下的所有新增文件和已跟踪文件的修改/删除,但不包括被删除的未跟踪文件。
git add .
# 添加所有变更,包括新增文件、已跟踪文件的修改 / 删除、被删除的未跟踪文件,覆盖范围比 git add . 更全面。
git add -A(或 git add --all)
(2)提交(git commit)
git commit 将暂存区的变更提交到本地仓库,生成一个不可修改的历史节点,是 Git 记录项目历史的核心操作。
# 将暂存区的所有变更打包成一个'提交记录',存入本地仓库,同时生成唯一标识(SHA-1 哈希值)。
git commit -m "清晰、有意义的提交说明"
(3)总结:
git add 负责'选中要提交的内容',git commit 负责'将选中内容存档为历史节点',两者配合完成本地代码的版本记录,是 Git 工作流的基础。
(1)翻阅历史日志:git log - 查看提交记录 (常用选项:--oneline, --graph, --pretty)
# 简洁模式,每条提交仅显示哈希值前 7 位和提交说明,适合快速浏览历史。
git log --oneline
# 以图形化方式展示分支合并历史,直观呈现分支关系(如 * 表示提交,| 表示分支线)。
git log --graph
# 自定义输出格式,常用 --pretty=fuller 显示完整提交信息(包括作者、提交者、时间戳),或 --pretty=format:"%h %an %s" 按需提取信息(%h 短哈希、%an 作者名、%s 提交说明)。
git log --pretty=<格式>
# 以图形化线条展示所有分支的提交历史和合并关系
git log --graph --oneline --all
(2)火眼金睛:git diff - 比较工作区、暂存区、不同提交之间的差异
# 比较工作区与暂存区 git diff(查看未暂存的修改)。
# 比较暂存区与本地仓库 git diff --staged(查看已暂存、待提交的修改)。
# 比较两个提交 git diff <提交 1> <提交 2>(如 git diff a3f8d2e b7c9d01,查看两次提交的差异)。
# 比较两个分支 git diff 分支 1 分支 2(如 git diff main dev,查看两分支最新提交的差异)。
(3)查看快照内容:git show - 查看特定提交的详细信息
# 查看最新提交 git show(默认显示 HEAD 指向的最新提交)。
# 查看指定提交 git show <提交哈希>(如 git show a3f8d2e,显示该提交的详细变更)。
# 查看标签对应的提交 git show <标签名>(如 git show v1.0,查看标签指向的提交详情)。
(1)创建分支
# 创建分支:
git branch <分支名>(如 git branch feature/login)
# 切换分支:
git checkout <分支名>(如 git checkout dev)
# 新版切换分支:
git switch <分支名>(更直观,如 git switch main)
# 创建并切换:
git switch -c <新分支名>(一步完成创建 + 切换)
(2)查看分支
# 显示本地所有分支,当前分支前标 *
git branch
# 显示本地 + 远程所有分支(远程分支以 remotes/ 开头)
git branch -a
# 将指定分支的代码整合到当前分支
git merge <待合并分支>
(1)什么是远程仓库? 远程仓库是托管在网络服务器上的 Git 仓库(如 GitHub、GitLab、Gitee 等平台),主要作用:
(2)配置远程仓库 ssh 公钥(无需每次输入账号密码)
# 生成密钥对
ssh-keygen -t ed25519 -C "建议与远程平台账号关联的邮箱"
# 查看并复制公钥内容
cat ~/.ssh/id_ed25519.pub

(3)关联远程仓库
# 将本地仓库与远程仓库关联
git remote add <远程名称> <仓库地址>
# 建立本地仓库与远程仓库的映射,后续可通过 origin 指代该远程仓库。
git remote add origin https://gitee.com/yourname/yourrepo.git
(4)查看远程仓库
# 列出当前仓库关联的所有远程仓库,包括名称和对应的 fetch(拉取)、push(推送)地址。
git remote -v(-v 表示显示详细地址)
(1)克隆 (Clone):
# 获取完整项目 (git clone) - 初始化远程关联的快捷方式
git clone https://gitee.com/yourname/yourrepo.git
(2)获取他人成果:git pull = git fetch + git merge
git fetch (获取远程更新但不自动合并)# 获取远程仓库 origin 的所有更新
git fetch origin
# 仅获取远程 main 分支的更新
git fetch origin main
git pull (获取并自动尝试合并到当前分支)# 对比本地当前分支与远程 main 的差异
git diff origin/main
# 手动将远程更新合并到当前分支
git merge origin/main
(3)上传你的杰作
# 第一次推送加 -u 建立追踪
git push -u origin
# 后续推送简化
git push
# 推送到仓库的哪个分支(dev master)
git push github(仓库别名)main(分支)
(1)撤销工作区修改:git checkout -- <文件>
# 撤销对 test.txt 的本地修改。
git checkout -- test.txt
(2)撤销暂存区修改:git reset HEAD <文件> 或 git restore --staged <文件>
git add 暂存的文件从暂存区撤回(回到'未暂存'状态),不影响工作区内容。# 传统:
git reset HEAD test.txt
# 新版:
git restore --staged test.txt
(3)修改最新提交:git commit --amend
git add 未提交的文件)。# 仅改注释:执行命令后编辑新注释,保存即可。补充文件:
git add 漏掉的文件
git commit --amend
git push -f),谨慎使用。(4)回退提交:git reset 与 git revert
git reset <版本>(修改历史,有风险)
--soft:仅回退提交记录,暂存区和工作区不变(可重新提交)。--mixed(默认):回退提交记录和暂存区,工作区不变(需重新 git add)。--hard:彻底回退提交记录、暂存区和工作区(工作区修改全部丢失,无法恢复)。git revert <版本>(安全回退)
# 生成新提交撤销 a1b2c3d 的修改。
git revert a1b2c3d
一、环境配置
| 命令 | 作用 | 示例 |
|---|---|---|
git --version | 验证安装 | git --version |
git config --global user.name "名字" | 设置全局用户名 | git config --global user.name "John" |
git config --global user.email "邮箱" | 设置全局邮箱 | git config --global user.email "[email protected]" |
git config --global core.editor "编辑器" | 设置默认文本编辑器 | git config --global core.editor "code --wait" |
二、本地仓库操作
| 命令 | 作用 | 示例 |
|---|---|---|
git init | 初始化新仓库 | git init |
git status | 查看工作区/暂存区状态 | git status |
git add <文件> | 添加文件到暂存区 | git add index.html |
git add . | 添加所有修改到暂存区 | git add . |
git commit -m "说明" | 提交到本地仓库 | git commit -m "初始化项目" |
git log | 查看提交历史 | git log --oneline --graph |
git diff | 查看工作区与暂存区差异 | git diff |
三、分支与合并
| 命令 | 作用 | 示例 |
|---|---|---|
git branch | 查看本地分支 | git branch |
git branch <分支名> | 创建新分支 | git branch feature-login |
git checkout <分支名> | 切换分支 | git checkout main |
git switch <分支名> | (推荐) 切换分支 | git switch feature |
git merge <分支名> | 合并分支到当前分支 | git merge feature |
git branch -d <分支名> | 删除分支 | git branch -d fix-bug |
四、远程仓库协作
| 命令 | 作用 | 示例 |
|---|---|---|
git remote add <别名> <URL> | 关联远程仓库 | git remote add origin https://... |
git clone <URL> | 克隆远程仓库 | git clone https://github.com/xxx.git |
git push -u <远程> <分支> | 首次推送分支 | git push -u origin main |
git push | 推送更改(已关联分支) | git push |
git pull | 拉取远程更新(自动合并) | git pull origin main |
git fetch | 仅获取远程更新(不合并) | git fetch |
五、撤销与修复
| 命令 | 作用 | 风险等级 |
|---|---|---|
git restore <文件> | 撤销工作区修改 | ⚠️ 覆盖本地更改 |
git restore --staged <文件> | 从暂存区撤回文件 | 安全 |
git commit --amend | 修改最新提交(信息/内容) | 低风险 |
git reset --soft HEAD~1 | 撤销提交但保留更改 | 中风险 |
git reset --hard HEAD~1 | 彻底丢弃最近提交 | ⚠️️ 高危(数据丢失) |
git revert <提交 ID> | 创建新提交来撤销旧提交 | 安全 |
六、高级维护
| 命令 | 作用 | 示例 |
|---|---|---|
git tag v1.0 | 创建版本标签 | git tag v1.0 |
git stash | 临时储藏修改 | git stash |
git stash pop | 恢复储藏的修改 | git stash pop |
git rm --cached <文件> | 从 Git 移除文件(保留本地) | git rm --cached .env |
git reflog | 查看操作历史(救命命令) | git reflog |

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online