📚 保姆级 Git 代码提交教程

4 阅读8分钟

你好!这份教程会像教小朋友一样,一步步带你掌握 Git 代码提交。不管你是完全零基础,还是已经踩过一些坑,这份教程都能帮你建立起完整、规范的 Git 使用流程。


📖 第一章:理解 Git 是什么

1.1 通俗理解 Git

想象你在写一本小说:

  • Git 就像一个时光机:可以随时记录你写的内容
  • 每次提交就像拍一张照片:记录下当前所有文件的样子
  • 远程仓库就像云盘:把照片备份到网上,防止电脑坏了丢失
  • 分支就像平行宇宙:可以同时尝试不同的故事情节

1.2 三个重要区域

Git 有三个核心工作区域,理解它们很重要:

工作区 (Working Directory) → 暂存区 (Staging Area) → 本地仓库 (Local Repo) → 远程仓库 (Remote Repo)
   ↓                           ↓                         ↓                       ↓
你正在修改的文件           准备提交的文件           已经保存的历史            GitHub上的备份

💻 第二章:第一次准备(环境搭建)

2.1 安装 Git

Windows 用户:

  1. 访问 git-scm.com/download/wi…
  2. 下载安装包(64-bit 版本)
  3. 双击安装,一路点击 "Next",全部用默认设置
  4. 安装完成后,在桌面空白处右键,看到 "Git Bash Here" 就成功了

Mac 用户:

  1. 打开终端(Terminal)
  2. 输入命令:git --version
  3. 如果没有安装,系统会提示你安装,点击确认即可

2.2 第一次配置(只需做一次)

打开命令行(Windows 用 Git Bash,Mac 用终端),输入:

# 设置你的身份标识(重要!)
git config --global user.name "你的名字"        # 比如:git config --global user.name "Zhang San"
git config --global user.email "你的邮箱"       # 比如:git config --global user.email "zhangsan@example.com"

# 设置默认分支名为 main(新项目推荐)
git config --global init.defaultBranch main

# 查看配置是否成功
git config --list

2.3 配置 SSH 密钥(连接 GitHub 的钥匙)

# 1. 生成 SSH 密钥(一路回车即可)
ssh-keygen -t ed25519 -C "你的邮箱"

# 2. 查看并复制公钥
cat ~/.ssh/id_ed25519.pub
# 屏幕上会显示一串字符,全部复制下来(以 ssh-ed25519 开头)

# 3. 打开 GitHub.com,登录你的账号
# 4. 点击右上角头像 → Settings → SSH and GPG keys
# 5. 点击 "New SSH key"
# 6. Title 填 "My Computer",Key 粘贴刚才复制的内容
# 7. 点击 "Add SSH key"

# 8. 测试连接
ssh -T git@github.com
# 如果看到 "Hi 你的用户名! You've successfully authenticated..." 就成功了

🚀 第三章:第一次提交代码

3.1 在 GitHub 上创建空仓库

  1. 登录 GitHub.com

  2. 点击右上角 "+" 号 → "New repository"

  3. 重要设置:

    • Repository name:填你的项目名(比如 my-first-project
    • Description:可选的描述
    • Public/Private:选 Private(私有)或 Public(公开)
    • 不要勾选 "Initialize this repository with a README"(因为我们从本地上传)
  4. 点击 "Create repository"

3.2 本地项目第一次提交

假设你已经在电脑上有一个项目文件夹,比如 D:\my-project

# 1. 进入你的项目目录
cd D:\my-project

# 2. 初始化 Git 仓库
git init

# 3. 查看当前状态(随时可以运行这个命令)
git status
# 应该会看到红色的文件名,说明文件还没被跟踪

# 4. 添加所有文件到暂存区
git add .

# 5. 再次查看状态(应该变成绿色)
git status

# 6. 提交到本地仓库
git commit -m "第一次提交:初始化项目"
# -m 后面是提交说明,要写清楚这次做了什么

# 7. 关联远程仓库(地址在刚才创建的仓库页面可以找到)
git remote add origin git@github.com:你的用户名/你的仓库名.git

# 8. 推送到 GitHub
git push -u origin main

# 如果提示 failed to push,可能是远程有 README,执行:
git pull origin main --allow-unrelated-histories
# 然后再次 git push

3.3 日常提交流程(最常用)

# 1. 查看哪些文件修改了
git status

# 2. 添加具体文件(推荐)
git add 文件名1 文件名2
# 或者添加所有修改
git add .

# 3. 提交(写好说明)
git commit -m "这里写你做了哪些修改"

# 4. 推送到 GitHub
git push

# 如果提示 "fatal: The current branch main has no upstream branch"
# 说明是第一次推送,执行:
git push -u origin main

📊 第四章:Git 状态图解

4.1 文件状态流转图

Untracked (未跟踪)      →    Staged (暂存)    →    Committed (已提交)
    ↓                           ↓                         ↓
  新文件                    git add 之后              git commit 之后

4.2 常用命令图解

git status        → 查看当前状态
    ↓
git add 文件      → 把文件放入暂存区
    ↓
git commit -m "说明" → 把暂存区的内容保存到本地仓库
    ↓
git push          → 上传到 GitHub

🔧 第五章:常见场景处理

5.1 场景一:提交错了想撤销

# 情况1:git add 多了文件(还在暂存区)
git reset HEAD 文件名    # 把文件移出暂存区

# 情况2:git commit 后发现写错了说明
git commit --amend -m "新的正确的说明"

# 情况3:想撤销最近的提交但保留修改
git reset --soft HEAD~1

# 情况4:想彻底撤销最近的修改
git reset --hard HEAD~1  # 小心!这会删除修改

5.2 场景二:拉取远程更新

# 获取远程更新但不合并
git fetch

# 获取远程更新并合并到本地
git pull

# 如果 pull 失败,可能是冲突了
# 先暂存本地修改
git stash
git pull
git stash pop  # 恢复暂存的修改,可能需要解决冲突

5.3 场景三:解决冲突

当出现 "CONFLICT" 提示时:

  1. 打开冲突的文件,搜索 <<<<<<<=======>>>>>>>
  2. 手动编辑文件,保留想要的内容
  3. 删除冲突标记
  4. 保存文件
  5. 执行:
git add 文件名
git commit -m "解决冲突"
git push

🌿 第六章:分支管理(进阶必备)

6.1 为什么需要分支?

  • main/master:主分支,放稳定代码
  • dev:开发分支,大家在这里协作
  • feature/xxx:功能分支,开发新功能
  • bugfix/xxx:修复分支,修 Bug

6.2 分支操作大全

# 查看所有分支
git branch

# 创建新分支
git branch dev

# 切换分支
git checkout dev
# 或者创建并切换(一步到位)
git checkout -b feature/login

# 合并分支(先切回目标分支)
git checkout main
git merge dev

# 删除分支
git branch -d dev
git branch -D dev  # 强制删除(未合并的)

🎯 第七章:提交信息规范

7.1 好的提交信息示例

# 推荐格式:<类型>: <简短描述>
git commit -m "feat: 添加用户登录功能"
git commit -m "fix: 修复登录页崩溃问题"
git commit -m "docs: 更新 README 文档"
git commit -m "style: 格式化代码"
git commit -m "refactor: 重构登录逻辑"
git commit -m "test: 添加登录测试用例"

7.2 提交频率建议

  • 每个独立功能一次提交(不要一天只提交一次)
  • 提交前测试代码能运行(不要把坏代码提交上去)
  • 提交信息要能看懂(一个月后自己还能明白)

🚨 第八章:常见错误及解决方法

8.1 错误:"Permission denied (publickey)"

原因:SSH 密钥没配好
解决:
1. 检查是否有密钥:ls ~/.ssh/
2. 重新生成:ssh-keygen -t ed25519 -C "你的邮箱"
3. 重新添加到 GitHub

8.2 错误:"Failed to connect to github.com port 443"

原因:网络问题或代理设置
解决:
1. 取消代理:git config --global --unset http.proxy
2. 或者设置正确的代理:git config --global http.proxy http://127.0.0.1:7890
3. 检查网络:ping github.com

8.3 错误:"Please tell me who you are"

原因:没设置用户名和邮箱
解决:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

8.4 错误:"failed to push some refs"

原因:远程有新提交,本地不是最新的
解决:
git pull
# 解决冲突(如果有)
git push

📝 第九章:日常最佳实践清单

9.1 每天开始工作前

# 1. 确保在主分支
git checkout main

# 2. 获取最新代码
git pull

# 3. 创建功能分支
git checkout -b feature/今天要做的功能

9.2 完成一个功能点时

# 1. 查看修改
git status

# 2. 添加相关文件
git add 相关的文件

# 3. 提交
git commit -m "feat: 完成xxx功能"

# 4. 推送到远程
git push

# 如果第一次推送这个分支:
git push -u origin feature/今天要做的功能

9.3 准备合并到主分支前

# 1. 切换回主分支
git checkout main

# 2. 更新主分支
git pull

# 3. 切换回功能分支
git checkout feature/今天要做的功能

# 4. 合并主分支到功能分支(解决可能的冲突)
git merge main

# 5. 推送最终版本
git push

# 6. 在 GitHub 上发起 Pull Request

🎓 第十章:Git 速查表

最常用的 10 个命令

命令说明使用频率
git status查看状态⭐⭐⭐⭐⭐
git add .添加所有修改⭐⭐⭐⭐⭐
git commit -m "说明"提交修改⭐⭐⭐⭐⭐
git push推送到远程⭐⭐⭐⭐⭐
git pull拉取更新⭐⭐⭐⭐⭐
git log查看历史⭐⭐⭐⭐
git branch查看分支⭐⭐⭐⭐
git checkout -b 分支名创建并切换分支⭐⭐⭐
git merge 分支名合并分支⭐⭐⭐
git stash暂存修改⭐⭐

查看历史的几种方式

# 简洁版
git log --oneline

# 图形化
git log --graph --oneline --all

# 查看某个文件的修改历史
git log -p 文件名

💡 最后一章:进阶学习建议

10.1 推荐的学习路径

  1. 第1周:掌握 add、commit、push、pull
  2. 第2周:学习分支操作(branch、checkout、merge)
  3. 第3周:学会解决冲突和回退版本
  4. 第4周:理解 rebase、stash 等进阶操作

10.2 推荐的 GUI 工具(不想记命令可以用)

  • SourceTree(免费,功能强大)
  • GitHub Desktop(简单易用)
  • VS Code 内置的 Git 功能(推荐)

10.3 学习资源


🎉 最后的话

记住:Git 不是用来背命令的,而是用来解决问题的工具。刚开始可能会觉得命令记不住,这很正常!我写了这么多年 Git,有些命令还是要现查。

这份教程里的命令,你不需要一次性全记住。收藏起来,遇到问题时回来查,用多了自然就记住了。

如果在使用过程中遇到任何问题,欢迎随时问我。Git 的世界里,每个人都是从零开始的,慢慢来,你一定能掌握!

祝你 Git 使用愉快!  🚀