跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

Git 入门教程

Git 版本控制系统的入门知识,包括环境安装、用户配置、仓库初始化、文件暂存与提交、版本回退、分支管理、远程仓库操作及标签管理等核心功能。此外,还涵盖了常见问题的解决方案、Git 工作流(如集中式、功能分支、Git Flow)以及团队协作的最佳实践,旨在帮助开发者快速上手并高效管理代码版本。

涅槃凤凰发布于 2026/3/22更新于 2026/7/2051 浏览
Git 入门教程

Git 入门教程

从零开始学习 Git 版本控制系统

一、初始化 Git 配置

1. 安装 Git

Git 下载地址

安装完成后,在开始菜单中找到 Git Bash 打开。

2. 检查安装

查看 Git 版本,检测是否安装成功:

git --version
3. 配置用户信息

配置用户名和邮箱(必须):

git config --global user.name "你的名字"
git config --global user.email "[email protected]"
4. 查看配置

查看所有配置信息:

git config --global --list
5. 配置 SSH 公钥
生成 SSH 密钥
ssh-keygen -t rsa -C "[email protected]"

操作步骤:

  1. 第一次回车:显示密钥存放位置(默认:~/.ssh/id_rsa)
  2. 第二次回车:输入密码(建议直接回车,不设置密码)
  3. 第三次回车:确认密码
  4. 生成完成
查找公钥文件
  • Windows:C:\Users\你的用户名\.ssh\id_rsa.pub
  • Mac/Linux:~/.ssh/id_rsa.pub
添加到 GitHub/GitLab
  1. 打开 id_rsa.pub 文件,复制全部内容
  2. 登录 GitHub/GitLab
  3. 进入 Settings → SSH Keys
  4. 点击 Add SSH Key,粘贴公钥并保存
验证 SSH 配置
# GitHub
ssh -T [email protected]
# GitLab
ssh -T [email protected]

成功会显示:Hi username! You've successfully authenticated...


二、初始化仓库

方式 1:创建本地新仓库
1. 创建项目文件夹
mkdir my_project
cd my_project
2. 初始化 Git 仓库
git init

执行后会创建 .git 隐藏文件夹(Git 仓库核心,不要删除)

3. 创建文件并提交
# 创建 README 文件
touch README.md
# 添加到暂存区
git add README.md
# 提交到本地仓库
git commit -m "Initial commit"
4. 关联远程仓库(可选)
# 添加远程仓库
git remote add origin <远程仓库 URL>
# 推送到远程
git push -u origin main
5. 删除仓库
rm -rf .git
方式 2:克隆远程仓库

直接从远程服务器克隆现有仓库:

git clone <远程仓库 URL>

示例:

git clone https://github.com/username/repo.git

克隆指定分支:

git clone -b <分支名> <远程仓库 URL>

三、工作区域和文件状态

Git 的三个工作区域
工作区 (Working Directory) ↓ git add 暂存区 (Staging Area) ↓ git commit 本地仓库 (Local Repository) ↓ git push 远程仓库 (Remote Repository)
区域说明
工作区本地计算机上的项目目录,可以直接编辑文件
暂存区临时存储区,保存即将提交的修改
本地仓库Git 存储项目历史记录的地方
远程仓库托管在服务器上的仓库(如 GitHub)
文件的三种状态
状态说明命令
已修改 (Modified)文件已修改但未暂存git add 进入暂存
已暂存 (Staged)文件已添加到暂存区git commit 提交
已提交 (Committed)文件已保存到本地仓库git push 推送
查看文件状态
git status

四、添加和提交文件

1. 创建文件
echo "Hello World" > file1.txt
2. 查看文件内容
cat file1.txt
3. 查看仓库状态
git status
4. 添加到暂存区

添加单个文件:

git add file1.txt

添加多个文件:

git add file1.txt file2.txt

添加所有 txt 文件:

git add *.txt

添加当前目录所有文件:

git add .
5. 提交到本地仓库

带提交信息:

git commit -m "提交说明"

打开编辑器编写详细信息:

git commit

一次性添加并提交(仅已跟踪文件):

git commit -am "提交说明"
6. 查看提交历史
# 查看详细历史
git log
# 单行显示
git log --oneline
# 图形化显示
git log --graph --oneline
# 查看最近 3 次提交
git log -3

五、回退版本

1. 查看提交历史
git log --oneline

输出示例:

a1b2c3d (HEAD -> main) 第三次提交
e4f5g6h 第二次提交
i7j8k9l 第一次提交
2. 回退方式对比
命令工作区暂存区本地仓库使用场景
git reset --soft保留保留回退重新提交
git reset --mixed保留清空回退重新暂存(默认)
git reset --hard清空清空回退完全放弃修改
3. 回退到上一个版本

回退但保留修改:

git reset --soft HEAD^

回退并取消暂存:

git reset --mixed HEAD^ # 或 git reset HEAD^

回退并丢弃所有修改:

git reset --hard HEAD^
4. 回退到指定版本
git reset --hard <commit-id>

示例:

git reset --hard e4f5g6h
5. 撤销工作区修改
# 撤销单个文件
git checkout -- file1.txt # 新版命令
git restore file1.txt
6. 取消暂存
# 取消暂存单个文件
git reset HEAD file1.txt # 新版命令
git restore --staged file1.txt
7. 查看所有操作记录
git reflog

可以找到所有提交的 commit-id,即使已经回退也能找回。


六、分支管理

1. 查看分支
# 查看本地分支
git branch
# 查看所有分支(含远程)
git branch -a
# 查看远程分支
git branch -r
2. 创建分支
git branch <分支名>
3. 切换分支
git checkout <分支名># 新版命令
git switch <分支名>
4. 创建并切换分支
git checkout -b <分支名># 新版命令
git switch -c <分支名>
5. 合并分支
# 切换到目标分支
git checkout main
# 合并指定分支到当前分支
git merge <分支名>
6. 删除分支
# 删除已合并分支
git branch -d <分支名># 强制删除分支
git branch -D <分支名>
7. 解决合并冲突

当合并出现冲突时:

# 1. 查看冲突文件
git status
# 2. 手动编辑冲突文件,删除冲突标记
<<<<<<< HEAD
当前分支的内容
=======
要合并分支的内容
>>>>>>> branch-name
# 3. 标记为已解决
git add <冲突文件>
# 4. 完成合并
git commit -m "解决冲突"

七、远程仓库操作

1. 查看远程仓库
git remote -v
2. 添加远程仓库
git remote add origin <远程仓库 URL>
3. 推送到远程
# 首次推送
git push -u origin main
# 后续推送
git push
4. 拉取远程更新
# 拉取并合并
git pull origin main
# 等同于
git fetch origin
git merge origin/main
5. 克隆远程仓库
git clone <远程仓库 URL>
6. 删除远程分支
git push origin --delete <分支名>

八、常见问题

问题 1:提交了错误的文件

解决方案:

# 撤销最后一次提交,保留修改
git reset --soft HEAD^
# 重新添加正确的文件
git add <正确的文件>
git commit -m "正确的提交"
问题 2:修改最后一次提交信息
git commit --amend -m "新的提交信息"
问题 3:忘记切换分支就开始工作
# 暂存当前工作
git stash
# 切换到正确分支
git checkout <正确分支>
# 恢复工作
git stash pop
问题 4:误删了文件
# 从暂存区恢复
git checkout -- <文件名>
# 从指定提交恢复
git checkout <commit-id> -- <文件名>
问题 5:推送被拒绝

原因:远程仓库有新提交

解决方案:

# 先拉取远程更新
git pull origin main
# 解决冲突后再推送
git push origin main
问题 6:.gitignore 不生效

原因:文件已被跟踪

解决方案:

# 从 Git 中移除但保留本地文件
git rm --cached <文件名>
# 提交更改
git commit -m "更新.gitignore"

常用.gitignore 模板

# 编译文件
*.class
*.o
*.pyc
# 日志文件
*.log
# 依赖目录
node_modules/
vendor/
# IDE 配置
.idea/
.vscode/
*.iml
# 系统文件
.DS_Store
Thumbs.db
# 环境配置
.env
config.local.js

学习资源

  • Git 官方文档
  • Pro Git 中文版
  • Git 可视化学习
  • GitHub 官方教程

九、标签管理

1. 创建标签
# 创建轻量标签
git tag v1.0
# 创建附注标签(推荐)
git tag -a v1.0 -m "版本 1.0 发布"
# 为指定提交打标签
git tag -a v0.9 <commit-id> -m "版本 0.9"
2. 查看标签
# 查看所有标签
git tag
# 查看标签详情
git show v1.0
# 查看符合模式的标签
git tag -l "v1.*"
3. 推送标签
# 推送单个标签
git push origin v1.0
# 推送所有标签
git push origin --tags
4. 删除标签
# 删除本地标签
git tag -d v1.0
# 删除远程标签
git push origin --delete v1.0

十、Git 工作流

1. 集中式工作流

适合小团队,所有人在 main 分支上工作。

# 拉取最新代码
git pull origin main
# 开发并提交
git add
git commit -m "新功能"
# 推送
git push origin main
2. 功能分支工作流

每个功能在独立分支开发。

# 创建功能分支
git checkout -b feature/login
# 开发并提交
git add
git commit -m "实现登录功能"
# 推送到远程
git push origin feature/login
# 合并到 main
git checkout main
git merge feature/login
# 删除功能分支
git branch -d feature/login
3. Git Flow 工作流

适合大型项目,有明确的发布周期。

分支类型:

  • main:生产环境代码
  • develop:开发分支
  • feature/*:功能分支
  • release/*:发布分支
  • hotfix/*:紧急修复分支
# 从 develop 创建功能分支
git checkout -b feature/new-feature develop
# 完成后合并回 develop
git checkout develop
git merge feature/new-feature
# 准备发布
git checkout -b release/1.0 develop
# 发布后合并到 main 和 develop
git checkout main
git merge release/1.0
git tag -a v1.0 -m "版本 1.0"
git checkout develop
git merge release/1.0

十一、高级技巧

1. 暂存工作区
# 暂存当前修改
git stash
# 查看暂存列表
git stash list
# 恢复最近的暂存
git stash pop
# 恢复指定暂存
git stash apply stash@{0}
# 删除暂存
git stash drop stash@{0}
# 清空所有暂存
git stash clear
2. 修改提交历史
# 修改最后一次提交
git commit --amend -m "新的提交信息"
# 合并最近 3 次提交
git rebase -i HEAD~3 # 在编辑器中将 pick 改为 squash
3. 查看差异
# 查看工作区与暂存区差异
git diff
# 查看暂存区与仓库差异
git diff --staged
# 查看两个分支差异
git diff branch1 branch2
# 查看指定文件差异
git diff file.txt
4. 文件操作
# 重命名文件
git mv old.txt new.txt
# 删除文件
git rm file.txt
# 仅从 Git 删除,保留本地
git rm --cached file.txt
5. 查找提交
# 按作者查找
git log --author="张三"
# 按日期查找
git log --since="2025-01-01" --until="2025-12-31"
# 按提交信息查找
git log --grep="修复"
# 查看文件修改历史
git log --follow file.txt
# 查看谁修改了某行代码
git blame file.txt

十二、团队协作

1. Fork 工作流
# 1. Fork 项目到自己账号
# 2. 克隆 Fork 的仓库
git clone <你的 Fork 仓库 URL>
# 3. 添加上游仓库
git remote add upstream <原始仓库 URL>
# 4. 创建功能分支
git checkout -b feature/new-feature
# 5. 提交修改
git add
git commit -m "新功能"
git push origin feature/new-feature
# 6. 在 GitHub 上创建 Pull Request
# 7. 同步上游更新
git fetch upstream
git checkout main
git merge upstream/main
git push origin main
2. Pull Request 流程
  1. Fork 项目
  2. 创建功能分支
  3. 提交代码
  4. 推送到自己的仓库
  5. 创建 Pull Request
  6. 代码审查
  7. 合并或修改
3. Code Review 最佳实践
  • 提交前自己先 review 一遍
  • PR 描述清晰,说明改动原因
  • 保持 PR 小而专注
  • 及时响应 review 意见
  • 使用有意义的 commit message

快速参考

常用命令速查
命令说明
git init初始化仓库
git clone <url>克隆仓库
git status查看状态
git add .添加所有文件
git commit -m "msg"提交
git push推送
git pull拉取
git branch查看分支
git checkout -b <name>创建并切换分支
git merge <branch>合并分支
git log --oneline查看历史
git reset --hard <id>回退版本
git stash暂存工作
提交信息规范
<type>(<scope>): <subject>
<body>
<footer>

type 类型:

  • feat:新功能
  • fix:修复 bug
  • docs:文档更新
  • style:代码格式
  • refactor:重构
  • test:测试
  • chore:构建/工具

示例:

feat(login): 添加记住密码功能
- 添加记住密码复选框
- 实现本地存储逻辑
- 添加自动登录功能
Closes #123

下一步

学完本教程后,建议:

  1. 实际创建一个项目练习
  2. 学习更多高级命令(参考 Git 命令速查手册)
  3. 了解 Git 工作流(Git Flow、GitHub Flow)
  4. 学习团队协作(Pull Request、Code Review)
  5. 掌握 Git Hooks 自动化工作流

目录

  1. Git 入门教程
  2. 一、初始化 Git 配置
  3. 1. 安装 Git
  4. 2. 检查安装
  5. 3. 配置用户信息
  6. 4. 查看配置
  7. 5. 配置 SSH 公钥
  8. 生成 SSH 密钥
  9. 查找公钥文件
  10. 添加到 GitHub/GitLab
  11. 验证 SSH 配置
  12. GitHub
  13. GitLab
  14. 二、初始化仓库
  15. 方式 1:创建本地新仓库
  16. 1. 创建项目文件夹
  17. 2. 初始化 Git 仓库
  18. 3. 创建文件并提交
  19. 创建 README 文件
  20. 添加到暂存区
  21. 提交到本地仓库
  22. 4. 关联远程仓库(可选)
  23. 添加远程仓库
  24. 推送到远程
  25. 5. 删除仓库
  26. 方式 2:克隆远程仓库
  27. 三、工作区域和文件状态
  28. Git 的三个工作区域
  29. 文件的三种状态
  30. 查看文件状态
  31. 四、添加和提交文件
  32. 1. 创建文件
  33. 2. 查看文件内容
  34. 3. 查看仓库状态
  35. 4. 添加到暂存区
  36. 5. 提交到本地仓库
  37. 6. 查看提交历史
  38. 查看详细历史
  39. 单行显示
  40. 图形化显示
  41. 查看最近 3 次提交
  42. 五、回退版本
  43. 1. 查看提交历史
  44. 2. 回退方式对比
  45. 3. 回退到上一个版本
  46. 4. 回退到指定版本
  47. 5. 撤销工作区修改
  48. 撤销单个文件
  49. 6. 取消暂存
  50. 取消暂存单个文件
  51. 7. 查看所有操作记录
  52. 六、分支管理
  53. 1. 查看分支
  54. 查看本地分支
  55. 查看所有分支(含远程)
  56. 查看远程分支
  57. 2. 创建分支
  58. 3. 切换分支
  59. 4. 创建并切换分支
  60. 5. 合并分支
  61. 切换到目标分支
  62. 合并指定分支到当前分支
  63. 6. 删除分支
  64. 删除已合并分支
  65. 7. 解决合并冲突
  66. 1. 查看冲突文件
  67. 2. 手动编辑冲突文件,删除冲突标记
  68. 3. 标记为已解决
  69. 4. 完成合并
  70. 七、远程仓库操作
  71. 1. 查看远程仓库
  72. 2. 添加远程仓库
  73. 3. 推送到远程
  74. 首次推送
  75. 后续推送
  76. 4. 拉取远程更新
  77. 拉取并合并
  78. 等同于
  79. 5. 克隆远程仓库
  80. 6. 删除远程分支
  81. 八、常见问题
  82. 问题 1:提交了错误的文件
  83. 撤销最后一次提交,保留修改
  84. 重新添加正确的文件
  85. 问题 2:修改最后一次提交信息
  86. 问题 3:忘记切换分支就开始工作
  87. 暂存当前工作
  88. 切换到正确分支
  89. 恢复工作
  90. 问题 4:误删了文件
  91. 从暂存区恢复
  92. 从指定提交恢复
  93. 问题 5:推送被拒绝
  94. 先拉取远程更新
  95. 解决冲突后再推送
  96. 问题 6:.gitignore 不生效
  97. 从 Git 中移除但保留本地文件
  98. 提交更改
  99. 常用.gitignore 模板
  100. 编译文件
  101. 日志文件
  102. 依赖目录
  103. IDE 配置
  104. 系统文件
  105. 环境配置
  106. 学习资源
  107. 九、标签管理
  108. 1. 创建标签
  109. 创建轻量标签
  110. 创建附注标签(推荐)
  111. 为指定提交打标签
  112. 2. 查看标签
  113. 查看所有标签
  114. 查看标签详情
  115. 查看符合模式的标签
  116. 3. 推送标签
  117. 推送单个标签
  118. 推送所有标签
  119. 4. 删除标签
  120. 删除本地标签
  121. 删除远程标签
  122. 十、Git 工作流
  123. 1. 集中式工作流
  124. 拉取最新代码
  125. 开发并提交
  126. 推送
  127. 2. 功能分支工作流
  128. 创建功能分支
  129. 开发并提交
  130. 推送到远程
  131. 合并到 main
  132. 删除功能分支
  133. 3. Git Flow 工作流
  134. 从 develop 创建功能分支
  135. 完成后合并回 develop
  136. 准备发布
  137. 发布后合并到 main 和 develop
  138. 十一、高级技巧
  139. 1. 暂存工作区
  140. 暂存当前修改
  141. 查看暂存列表
  142. 恢复最近的暂存
  143. 恢复指定暂存
  144. 删除暂存
  145. 清空所有暂存
  146. 2. 修改提交历史
  147. 修改最后一次提交
  148. 合并最近 3 次提交
  149. 3. 查看差异
  150. 查看工作区与暂存区差异
  151. 查看暂存区与仓库差异
  152. 查看两个分支差异
  153. 查看指定文件差异
  154. 4. 文件操作
  155. 重命名文件
  156. 删除文件
  157. 仅从 Git 删除,保留本地
  158. 5. 查找提交
  159. 按作者查找
  160. 按日期查找
  161. 按提交信息查找
  162. 查看文件修改历史
  163. 查看谁修改了某行代码
  164. 十二、团队协作
  165. 1. Fork 工作流
  166. 1. Fork 项目到自己账号
  167. 2. 克隆 Fork 的仓库
  168. 3. 添加上游仓库
  169. 4. 创建功能分支
  170. 5. 提交修改
  171. 6. 在 GitHub 上创建 Pull Request
  172. 7. 同步上游更新
  173. 2. Pull Request 流程
  174. 3. Code Review 最佳实践
  175. 快速参考
  176. 常用命令速查
  177. 提交信息规范
  178. 下一步
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • JSP 高速公路管理系统设计与实现
  • Neo4j 图数据库核心知识与在线控制台使用指南
  • 腾讯位置服务 AI+地图赛道:选题方向、投稿要求与拿分思路
  • TarsGo 多语言生态:如何与 Java、C++、PHP 等服务互通
  • Windows 本地部署 Ollama 与 OpenClaw 实现 AI 自动化办公
  • 动态规划:斐波那契数列类题目解析
  • Python 基础:容器公共操作与推导式详解
  • C++ 内存管理进阶:从裸指针到智能指针的实战指南
  • AI 如何自动生成一线与二线产区标准图
  • 10 款主流 AI 写作辅助工具功能测评与对比
  • C++ 类和对象(二):默认成员函数详解
  • Python 核心语法精讲:变量、流程控制与数据结构
  • VSCode 在 WSL 环境下无法使用 Github Copilot 网络问题排查
  • JVM 运行时数据区域详解
  • SpringBoot 启动引导类的命名约定与核心原理
  • faster-whisper 异步批处理架构实战与性能优化
  • LightRAG:基于图结构索引的智能检索增强生成系统
  • 宏智树 AI:基于 ChatGPT 学术版的智能写作平台
  • OCR 技术演进:从传统识别到大模型应用
  • 近五年体内微/纳米机器人赋能肿瘤精准治疗综述:以 GBM 为重点

相关免费在线工具

  • 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