1. Git 概述
什么是 Git?
Git 是一个 分布式版本控制系统(DVCS),由 Linux 之父 Linus Torvalds 于 2005 年创建,用于高效管理代码的变更历史。
核心特点
- 分布式:每个开发者本地都有一份完整的代码仓库(包括完整历史),不依赖中央服务器。
- 快照式存储:Git 不保存'文件差异',而是对每次提交(commit)保存整个项目的一个。
Git 是分布式版本控制系统,本文介绍其核心特点及常用命令,涵盖基础配置、本地操作、分支管理、远程协作与撤销重置。同时提供误删恢复、冲突解决、回滚提交等特殊场景的解决方案,并给出小步提交、分支开发等最佳实践,帮助开发者高效管理代码变更。

Git 是一个 分布式版本控制系统(DVCS),由 Linux 之父 Linus Torvalds 于 2005 年创建,用于高效管理代码的变更历史。
💡 Git ≠ GitHub!
Git 是工具,GitHub 是托管 Git 仓库的网站。
# ⭐配置用户名和邮箱(关联提交记录,需与 Git 平台账号一致)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@xxx.com"
# 查看配置信息
git config --list
| 命令 | 说明 |
|---|---|
git init | 初始化一个新的 Git 仓库 |
git clone <url> | 克隆远程仓库到本地 |
git status | 查看工作区状态(哪些文件被修改/未跟踪) |
git add <file> 或 git add . | 将文件添加到暂存区(staging area) |
git commit -m "message" | 提交暂存区内容到本地仓库 |
git log / git log --oneline | 查看提交历史 |
git diff | 查看工作区与暂存区的差异 |
git restore <file> | 撤销工作区修改(Git 2.23+)旧版用 git checkout -- <file> |
| 命令 | 说明 |
|---|---|
git branch | 列出本地分支 |
git branch <name> | 创建新分支 |
git checkout <branch> 或 git switch <branch> | 切换分支 |
git merge <branch> | 合并指定分支到当前分支 |
git branch -d <name> | 删除已合并的分支 |
git branch -D <name> | 强制删除分支 |
| 命令 | 说明 |
|---|---|
git remote -v | 查看远程仓库地址 |
git fetch | 从远程拉取最新历史(不自动合并) |
git pull | = git fetch + git merge,拉取并合并 |
git push origin <branch> | 推送本地分支到远程 |
git push -u origin <branch> | 首次推送并设置 upstream(后续可直接 git push) |
| 命令 | 说明 |
|---|---|
git reset --soft HEAD~1 | 撤销最后一次提交,保留更改在暂存区 |
git reset --mixed HEAD~1(默认) | 撤销提交,保留更改在工作区 |
git reset --hard HEAD~1 | 彻底丢弃最后一次提交及所有更改(慎用!) |
git revert <commit> | 创建一个新提交来'反向'撤销某次提交(安全,适用于已推送的提交) |
# 如果已提交过
git checkout <commit-id> -- <file>
# 如果刚 add 但未 commit
git restore --staged <file>
# 先取消暂存
git restore <file>
# 再恢复工作区
git commit --amend -m "正确的提交信息"
# 注意:仅限未 push 的最新提交
# 方法:使用 cherry-pick
git checkout target-branch
git cherry-pick <commit-id>
<<<<<<<, =======, >>>>>>>)git add <file> 标记冲突已解决git commit 完成合并注:恢复 stash 之前,当前分支不可以新增或变更其他文件,否则会恢复失败
git stash # 保存当前修改到'藏匿区'
git checkout other-branch # ...做其他事...
git stash pop # 恢复之前的工作
❌ 不要用
reset --hard+push -f(会破坏他人历史)
✅ 正确做法:
git revert <bad-commit-id># 生成一个'反向'提交
git push # 安全推送
git blame <file># 显示每行最后修改的 commit 和作者
git clean -n # 预览将被删除的文件
git clean -f # 强制删除未跟踪文件
git clean -fd # 同时删除目录
# 创建一个新仓库
git clone https://<remote-repo-url>.git
cd nova-portal
echo "# nova-portal">> README.md
git add README.md
git commit -m "add README"
git branch -m main
git push -u origin main
# 推送现有的文件
cd existing_folder
git init
git remote add origin https://<remote-repo-url>.git
git add .
git commit -m "Initial commit"
git branch -m main
git push -u origin main
# 推送现有的 Git 仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://<remote-repo-url>.git
git push -u origin --all
git push -u origin --tags
详解:
# ==============================================
# Git 本地仓库初始化并推送到远程仓库
# 适用场景:本地已有项目文件夹,首次推送到远程空仓库
# ==============================================
# 1. 进入本地已存在的项目文件夹(替换为实际文件夹路径)
cd existing_folder
# 2. 初始化本地 Git 仓库(生成 .git 隐藏目录,存储版本信息)
# 执行后该文件夹成为 Git 可管理的仓库
git init
# 3. 关联远程仓库(origin 是远程仓库的默认别名,可自定义)
# 替换 https://<remote-repo-url>.git 为实际的远程仓库地址
git remote add origin https://<remote-repo-url>.git
# 4. 将本地文件夹下所有文件/文件夹添加到 Git 暂存区
# "." 表示当前目录下所有内容,也可指定具体文件/文件夹
git add .
# 5. 将暂存区内容提交到本地仓库,备注为 "Initial commit"(首次提交规范备注)
# -m 后必须跟提交备注,描述本次提交的内容
git commit -m "Initial commit"
# 6. 将本地默认分支 master 重命名为 main(符合现代 Git 分支命名规范,GitHub/GitCode 主流默认分支为 main)
# 若远程仓库默认分支是 master,可跳过此步骤
git branch -m main
# 7. 将本地 main 分支推送到远程 origin 仓库,并建立本地与远程分支的关联(-u 等价于 --set-upstream)
# 后续推送可简化为 git push,拉取为 git pull
git push -u origin main
main/master 上开发。| 维度 | 要点 |
|---|---|
| 本质 | 分布式版本控制系统 |
| 核心对象 | 工作区 → 暂存区 → 本地仓库 → 远程仓库 |
| 灵魂操作 | add / commit / branch / merge / pull / push |
| 高级技巧 | revert / cherry-pick / stash / reflog(救命命令) |
📚 推荐学习资源:官方 Pro Git 书(免费中文版:https://git-scm.com/book/zh/v2) 可视化练习:https://learngitbranching.js.org
掌握 Git,是每个开发者提升协作效率和代码管理能力的关键一步!

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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