跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
|注册
博客列表

目录

  1. 1. Git 概述
  2. 什么是 Git?
  3. 核心特点
  4. 常见协作平台
  5. 2. Git 常用命令
  6. 基础配置
  7. ⭐配置用户名和邮箱(关联提交记录,需与 Git 平台账号一致)
  8. 查看配置信息
  9. 本地操作
  10. 分支管理
  11. 远程协作
  12. 撤销与重置
  13. 3. Git 一些特殊场景
  14. 🎯 场景 1:误删文件,如何恢复?
  15. 如果已提交过
  16. 如果刚 add 但未 commit
  17. 先取消暂存
  18. 再恢复工作区
  19. 🎯 场景 2:提交信息写错了
  20. 注意:仅限未 push 的最新提交
  21. 🎯 场景 3:想把某次提交“移动”到另一个分支
  22. 方法:使用 cherry-pick
  23. 🎯 场景 4:解决冲突(Conflict)
  24. 🎯 场景 5:临时保存工作进度(不提交)
  25. 🎯 场景 6:回滚已推送到远程的提交
  26. 🎯 场景 7:查看某行代码是谁改的?
  27. 🎯 场景 8:清理未跟踪的文件
  28. 🎯 场景 9:推送一个新项目
  29. 创建一个新仓库
  30. 推送现有的文件
  31. 推送现有的 Git 仓库
  32. ==============================================
  33. Git 本地仓库初始化并推送到远程仓库
  34. 适用场景:本地已有项目文件夹,首次推送到远程空仓库
  35. ==============================================
  36. 1. 进入本地已存在的项目文件夹(替换为实际文件夹路径)
  37. 2. 初始化本地 Git 仓库(生成 .git 隐藏目录,存储版本信息)
  38. 执行后该文件夹成为 Git 可管理的仓库
  39. 3. 关联远程仓库(origin 是远程仓库的默认别名,可自定义)
  40. 替换 https://<remote-repo-url>.git 为实际的远程仓库地址
  41. 4. 将本地文件夹下所有文件/文件夹添加到 Git 暂存区
  42. "." 表示当前目录下所有内容,也可指定具体文件/文件夹
  43. 5. 将暂存区内容提交到本地仓库,备注为 "Initial commit"(首次提交规范备注)
  44. -m 后必须跟提交备注,描述本次提交的内容
  45. 6. 将本地默认分支 master 重命名为 main(符合现代 Git 分支命名规范,GitHub/GitCode 主流默认分支为 main)
  46. 若远程仓库默认分支是 master,可跳过此步骤
  47. 7. 将本地 main 分支推送到远程 origin 仓库,并建立本地与远程分支的关联(-u 等价于 --set-upstream)
  48. 后续推送可简化为 git push,拉取为 git pull
  49. 💡 最佳实践建议
  50. 总结
Shell / Bash

Git 版本控制常用命令与场景指南

Git 是分布式版本控制系统,本文介绍其核心特点及常用命令,涵盖基础配置、本地操作、分支管理、远程协作与撤销重置。同时提供误删恢复、冲突解决、回滚提交等特殊场景的解决方案,并给出小步提交、分支开发等最佳实践,帮助开发者高效管理代码变更。

极客工坊发布于 2026/3/290 浏览
Git 版本控制常用命令与场景指南

1. Git 概述

什么是 Git?

Git 是一个 分布式版本控制系统(DVCS),由 Linux 之父 Linus Torvalds 于 2005 年创建,用于高效管理代码的变更历史。

核心特点

  • 分布式:每个开发者本地都有一份完整的代码仓库(包括完整历史),不依赖中央服务器。
  • 快照式存储:Git 不保存'文件差异',而是对每次提交(commit)保存整个项目的一个。
快照
  • 分支轻量:创建、切换、合并分支成本极低,鼓励基于分支的开发流程(如 Git Flow、GitHub Flow)。
  • 数据完整性:所有内容通过 SHA-1 哈希校验,确保历史不可篡改。
  • 常见协作平台

    • GitHub
    • GitLab
    • Gitee(码云)
    • Bitbucket
    • GitCode

    💡 Git ≠ GitHub!
    Git 是工具,GitHub 是托管 Git 仓库的网站。


    2. 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>创建一个新提交来'反向'撤销某次提交(安全,适用于已推送的提交)

    3. Git 一些特殊场景

    🎯 场景 1:误删文件,如何恢复?

    # 如果已提交过
    git checkout <commit-id> -- <file>
    # 如果刚 add 但未 commit
    git restore --staged <file>
    # 先取消暂存
    git restore <file>
    # 再恢复工作区
    

    🎯 场景 2:提交信息写错了

    git commit --amend -m "正确的提交信息"
    # 注意:仅限未 push 的最新提交
    

    🎯 场景 3:想把某次提交'移动'到另一个分支

    # 方法:使用 cherry-pick
    git checkout target-branch
    git cherry-pick <commit-id>
    

    🎯 场景 4:解决冲突(Conflict)

    1. 手动编辑冲突文件(查找 <<<<<<<, =======, >>>>>>>)
    2. 保留需要的代码,删除标记
    3. git add <file> 标记冲突已解决
    4. git commit 完成合并

    🎯 场景 5:临时保存工作进度(不提交)

    注:恢复 stash 之前,当前分支不可以新增或变更其他文件,否则会恢复失败

    git stash # 保存当前修改到'藏匿区'
    git checkout other-branch # ...做其他事...
    git stash pop # 恢复之前的工作
    

    🎯 场景 6:回滚已推送到远程的提交

    ❌ 不要用 reset --hard + push -f(会破坏他人历史)
    ✅ 正确做法:

    git revert <bad-commit-id># 生成一个'反向'提交
    git push # 安全推送
    

    🎯 场景 7:查看某行代码是谁改的?

    git blame <file># 显示每行最后修改的 commit 和作者
    

    🎯 场景 8:清理未跟踪的文件

    git clean -n # 预览将被删除的文件
    git clean -f # 强制删除未跟踪文件
    git clean -fd # 同时删除目录
    

    🎯 场景 9:推送一个新项目

    # 创建一个新仓库
    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 上开发。
    • Pull Before Push:推送前先拉取,避免冲突。
    • .gitignore:合理配置忽略日志、编译产物等。
    • 不要 force push 公共分支:除非团队约定且你知道后果。

    总结

    维度要点
    本质分布式版本控制系统
    核心对象工作区 → 暂存区 → 本地仓库 → 远程仓库
    灵魂操作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

    更多推荐文章

    查看全部
    • Microi 吾码开源低代码平台技术架构与功能解析
    • VSCode Cline 插件 Git 锁文件冲突解决方案
    • MySQL 登录报错 ERROR 1045 (28000) 解决方案
    • C++ IDE 选型指南:主流工具对比与新手避坑建议
    • Linux 进程地址空间与虚拟内存机制解析
    • 普通 PC 安装 macOS 系统实战指南
    • 使用 FastAPI 和 HTML/CSS/JavaScript 构建博客系统示例
    • C++ Tarjan 算法详解:点双连通分量与割点
    • Nginx njs 模块简介与实践
    • IDEA 与 VSCode Git 标准操作规范:更新、提交、分支及标签管理
    • 嵌入式 C/C++ 面试:STL 容器与算法详解
    • VMware 虚拟机安装 Ubuntu 24.04 详细指南
    • 数据结构:排序算法详解(插入与选择排序)

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown 转 HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online

    • HTML 转 Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online