Git 使用保姆级教程(2026)

Git 使用保姆级教程(2026) 本文档详细记录了从配置到日常使用的完整 Git 工作流程 目录目录一、首次配置1.1 全局配置1.2 查看当前配置二、基础操作命令2.1 查看状态2.2 查看差异2.3 添加文件到暂存区2.4 提交三、分支操作3.1 查看分支3.2 创建分支3.3 切换分支3.4 删除分支3.5 重命名分支四、远程仓库操作4.1 查看远程仓库4.2 添加/修改远程仓库4.3 拉取远程代码4.4 推送代码到远程五、完整工作流程场景一从 main 分支拉取最新代码开发新功能场景二更新 fork 的仓库场景三合并分支六、常见问题与解决方案6.1 凭证问题6.2 分支冲突6.3 推送被拒绝6.4 撤销操作6.5 查看历史6.6 暂存工作七、常用命令速查表八、最佳实践提交信息规范注意事项一、首次配置1.1 全局配置# 设置用户名gitconfig--globaluser.name你的名字# 设置邮箱gitconfig--globaluser.emailyour_emailexample.com# 设置默认分支名gitconfig--globalinit.defaultbranch main# 启用凭证存储避免每次输入密码gitconfig--globalcredential.helper store1.2 查看当前配置gitconfig--list二、基础操作命令2.1 查看状态# 查看工作目录状态gitstatus# 简洁模式gitstatus-s2.2 查看差异# 查看工作区 vs 暂存区gitdiff# 只看暂存区 vs 最新提交gitdiff--cached# 查看某个文件的改动gitdifffilename2.3 添加文件到暂存区# 添加单个文件gitaddfilename# 添加所有改动gitadd.# 添加所有已跟踪文件的改动不包括新文件gitadd-u# 交互式添加gitadd-i2.4 提交# 提交暂存区的改动gitcommit-m提交信息# 提交所有已跟踪文件的改动跳过 git addgitcommit-am提交信息# 修改最后一次提交还没 push 的情况下gitcommit--amend-m新的提交信息三、分支操作3.1 查看分支# 查看本地分支* 表示当前分支gitbranch# 查看所有分支包括远程gitbranch-a# 查看分支详细信息gitbranch-v# 查看已合并到当前分支的分支gitbranch--merged# 查看未合并到当前分支的分支gitbranch --no-merged3.2 创建分支# 基于当前分支创建新分支gitbranch new-branch-name# 创建并切换到新分支gitcheckout-bnew-branch-name# 基于远程分支创建本地分支gitcheckout-blocal-branch-name origin/remote-branch-name# 使用 switch现代命令更清晰gitswitch-cnew-branch-name# 创建并切换gitswitch existing-branch-name# 直接切换3.3 切换分支# 切换到已有分支gitcheckout branch-name# 切换到上一个分支gitcheckout -# 使用 switch推荐gitswitch branch-name3.4 删除分支# 删除已合并的分支gitbranch-dbranch-name# 强制删除分支即使未合并gitbranch-Dbranch-name# 删除远程分支gitpush origin--deleteremote-branch-name3.5 重命名分支# 重命名当前分支gitbranch-mnew-name# 重命名其他分支gitbranch-mold-name new-name四、远程仓库操作4.1 查看远程仓库# 查看远程仓库地址gitremote-v# 查看远程仓库详细信息gitremote show origin4.2 添加/修改远程仓库# 添加远程仓库gitremoteaddorigin https://gitee.com/xxx/repo.git# 修改远程仓库地址gitremote set-url origin https://gitee.com/xxx/repo.git# 重命名远程仓库gitremoterenameorigin upstream4.3 拉取远程代码# 从远程拉取最新代码不合并gitfetch origin# 拉取并合并到当前分支gitpull origin branch-name# 简化写法默认拉取当前分支对应的远程分支gitpull# 拉取并rebase保持提交历史线性gitpull--rebaseorigin branch-name4.4 推送代码到远程# 推送当前分支到远程gitpush origin branch-name# 简化写法推送当前分支gitpush# 推送并设置上游分支首次推送gitpush-uorigin branch-name# 强制推送谨慎使用gitpush--force五、完整工作流程场景一从 main 分支拉取最新代码开发新功能# 1. 确保工作区干净切换到 main 分支gitcheckout main# 2. 拉取远程最新代码gitpull origin main# 3. 创建并切换到新功能分支gitcheckout-bfeature/your-feature-name# 4. 开始开发...# 5. 查看改动gitstatusgitdiff# 6. 添加文件到暂存区gitadd.# 7. 提交gitcommit-mfeat: 添加新功能# 8. 推送分支到远程首次推送需要 -ugitpush-uorigin feature/your-feature-name# 9. 在 Gitee/GitHub 上创建 Pull Request场景二更新 fork 的仓库# 1. 添加上游仓库如果还没有gitremoteaddupstream https://xxx/upstream-repo.git# 2. 获取上游最新代码gitfetch upstream# 3. 切换到 main 分支gitcheckout main# 4. 合并上游代码gitmerge upstream/main# 5. 推送更新到自己的远程仓库gitpush origin main场景三合并分支# 1. 切换到要合并到的分支通常是 maingitcheckout main# 2. 合并功能分支gitmerge feature/your-feature# 3. 解决冲突如果有的话# 编辑冲突文件保留需要的代码gitaddresolved-file# 4. 完成合并提交gitcommit# 5. 推送到远程gitpush origin main六、常见问题与解决方案6.1 凭证问题问题每次 push 都要求输入用户名密码解决方案# 方法1使用凭证存储已配置gitconfig--globalcredential.helper store# 方法2使用 SSH 密钥ssh-keygen-ted25519-Cyour_emailexample.com# 将 ~/.ssh/id_ed25519.pub 内容添加到 Gitee/GitHub# 方法3使用 Gitee 令牌# 在 Gitee 设置 - 私人令牌 中生成令牌# 然后使用格式https://your_tokengitee.com/xxx/repo.git6.2 分支冲突问题两个分支对同一文件做了不同的修改解决方案# 1. 打开冲突文件会看到类似这样的标记HEAD 当前分支的代码要合并分支的代码feature-branch# 2. 手动编辑保留需要的代码删除标记# 3. 添加文件gitaddfilename# 4. 完成合并gitcommit-m解决冲突6.3 推送被拒绝问题! [rejected] non-fast-forward原因远程分支有你本地没有的提交解决方案# 方案1先拉取远程代码再推送gitpull origin branch-name# 解决冲突后gitpush origin branch-name# 方案2如果确定远程代码可以覆盖使用强制推送危险gitpush--forceorigin branch-name# 方案3使用 rebase 保持历史整洁gitpull--rebaseorigin branch-name# 解决冲突后gitrebase--continue6.4 撤销操作# 撤销工作区的改动未 addgitcheckout -- filenamegitrestore filename# 撤销暂存区已 add 但未 commitgitreset HEAD filenamegitrestore--stagedfilename# 撤销最后一次提交保留改动在工作区gitreset--softHEAD~1# 撤销最后一次提交保留改动在暂存区gitreset--mixedHEAD~1# 撤销最后一次提交完全丢弃gitreset--hardHEAD~16.5 查看历史# 查看提交历史gitlog# 简洁模式gitlog--oneline# 图形化显示分支gitlog--graph--oneline--all# 查看某个文件的修改历史gitlog-pfilename# 查看某次提交的具体改动gitshow commit-id6.6 暂存工作# 暂存当前工作还没完成不想提交的改动gitstash# 暂存并添加备注gitstash save暂时保存修改了 XX 功能# 查看暂存列表gitstash list# 恢复最新暂存同时保留暂存gitstash apply# 恢复最新暂存删除暂存gitstash pop# 删除暂存gitstash drop stash{0}七、常用命令速查表操作命令查看状态git status查看分支git branch -a切换分支git checkout main创建并切换git checkout -b new-branch拉取更新git pull origin main添加文件git add .提交代码git commit -m 描述推送代码git push origin branch-name查看历史git log --oneline暂存工作git stash八、最佳实践提交信息规范前缀用途示例feat新功能feat: 添加用户登录功能fix修复 bugfix: 修复登录页面闪退问题docs文档更新docs: 更新 READMEstyle格式调整style: 格式化代码refactor重构refactor: 重构用户模块test测试相关test: 添加单元测试chore构建/工具chore: 更新依赖版本注意事项提交粒度每次提交只包含一个逻辑改动便于回溯推送前先git pull拉取最新代码减少冲突谨慎操作永远不要强制推送 (--force) 到 main/master 分支删除分支前确认已合并重要操作前先git status确认当前状态 文档创建时间2026/07/08