Git 基础教程
下面是一份 超系统的 Git 教程大全,从零基础到高级技巧,覆盖核心概念、工作流、命令、场景实战、最佳实践、故障排查等内容。
目录(可直接点我继续展开)
- Git 基础概念
- Git 安装与配置
- Git 工作区、暂存区、仓库
- Git 基本常用命令
- Git 分支管理
- Git 合并与变基(merge / rebase)
- Git 远程仓库(GitLab/Github)
- Git 标签(tag)
- Git 常用实战场景
- Git 高阶内容
- Git 最佳实践
- Git 排错与修复常见问题
- Git 安全与凭据管理
什么是 Git?
Git 是一个分布式版本控制系统。
“分布式” 的意义在于:
- 每个人本地都有一个完整仓库(包括历史记录)
- 不依赖中心服务器就能提交、查看历史
核心概念三件套
| 名称 | 描述 |
|---|---|
| 工作区 Working Directory | 项目文件所在的普通目录 |
| 暂存区 Staging Area | 即将提交到本地仓库的文件区域 |
| 本地仓库 Repository | .git/ 目录,保存历史记录 |
| 远程仓库 Remote | GitLab/Github 等存放仓库副本的服务器 |
Linux:
sudo apt install git
Mac:
brew install git
Windows:下载 Git for Windows
git config --global user.name "your name"
git config --global user.email "your@email.com"
查看所有配置:
git config --list
最核心流程:
工作区 -> 暂存区 -> 本地仓库 -> 远程仓库
提交时你做的是:
git add # 放到暂存区
git commit # 放到本地仓库
git push # 推到远程仓库
查看文件状态
git status
添加到暂存区
git add file
git add .
提交
git commit -m "message"
撤销 add
git reset HEAD file
撤销工作区修改
git checkout -- file
查看历史
git log --oneline --graph --decorate
比较差异
git diff
创建与切换
git branch new-feature
git checkout new-feature
快捷:
git checkout -b new-feature
删除分支
git branch -d branchname
git branch -D branchname
merge
git merge dev
特点:
- 保留分叉,记录直观,可追溯
rebase
git rebase main
特点:
- 让历史更干净
缺点:不要对别人已经基于你的提交 rebase
详细区别:
- merge 创建一个合并提交
- rebase 重新播放提交,让历史线性化
添加远程
git remote add origin URL
查看远程 URL
git remote -v
推送
git push origin branchname
拉取
git pull origin branchname
创建 tag
git tag v1.0
带注释:
git tag -a v1.0 -m "release"
推送 tag
git push origin v1.0
推全部 tag
git push origin --tags
修改最新提交 message
git commit --amend
合并多个提交(squash)
git rebase -i HEAD~3
回滚某个 commit
git revert <hash>
强制回退
git reset --hard <hash>
git push -f
查看最近一次修改了哪些文件
git diff-tree --no-commit-id --name-only -r HEAD
- Git hooks(自动化)
- Git submodule(子模块)
- Git stash(工作区暂存)
- Git cherry-pick(挑提交)
- Git bisect(定位 bug 提交)
- Git gc / prune(垃圾回收)
推荐:
- main/master:主线
- develop:开发线
- feature/xxx:功能分支
- release/xxx:发布分支
- hotfix/xxx:紧急修复
feat: 新功能
fix: 修复 bug
docs: 文档修改
refactor: 重构
style: 格式修改
test: 测试相关
chore: 其他
| 错误 | 原因 | 解决 |
|---|---|---|
| Your branch and ‘origin/x’ have diverged | 分叉 | git pull –rebase |
| fatal: refusing to merge unrelated histories | 两仓库无共同历史 | git pull –allow-unrelated-histories |
| There is no merge to abort | 没有处于 merge 状态 | 忽略 |
| 无法 push | 远端有新提交 | 先 git pull –rebase |
- 使用 Personal Access Token 代替密码
- 使用 credential.helper
- 禁止读取 ~/.git-credentials
- 使用 GIT_ASKPASS
- CI/CD 中安全推拉代码