Git 实用指南
约 1806 字大约 6 分钟
2024-11-02
📚 Git 实用指南
1. 仓库管理
1.1 初始化与克隆
初始化仓库:在当前目录创建新的 Git 仓库
git init克隆远程仓库:下载完整的项目及其历史
git clone [url] [目标目录]- 示例:
git clone https://github.com/username/repo.git my-project
- 示例:
浅克隆:只克隆最近的提交,加快速度
git clone --depth 1 [url]
1.2 仓库配置
查看配置:显示当前 Git 配置
git config --list编辑配置:修改 Git 配置文件
# 全局配置 git config --global -e # 本地仓库配置 git config -e设置用户信息:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"设置默认编辑器:
git config --global core.editor "vscode --wait"设置默认分支:
git config --global init.defaultBranch main
2. 文件操作
2.1 添加与删除
添加指定文件:
git add [file1] [file2] ...添加目录:包括子目录
git add [dir]添加所有文件:
git add .交互式添加:逐个确认修改
git add -p删除文件:从工作区和暂存区删除
git rm [file1] [file2] ...仅从暂存区删除:保留工作区文件
git rm --cached [file]重命名文件:
git mv [原文件名] [新文件名]
3. 代码提交
3.1 基本提交
提交暂存区:
git commit -m "提交信息"提交指定文件:
git commit [file1] [file2] ... -m "提交信息"自动添加并提交:
git commit -a -m "提交信息"详细提交:显示所有 diff 信息
git commit -v
3.2 提交修改
修改上次提交:
git commit --amend -m "新的提交信息"修改上次提交并添加文件:
git commit --amend [file1] [file2] ...空提交:用于触发 CI/CD
git commit --allow-empty -m "触发构建"
4. 分支管理
4.1 分支操作
列出本地分支:
git branch列出远程分支:
git branch -r列出所有分支:
git branch -a创建分支:
git branch [分支名]创建并切换分支:
git checkout -b [分支名] # 或使用新语法 git switch -c [分支名]切换分支:
git checkout [分支名] # 或使用新语法 git switch [分支名]切换到上一个分支:
git checkout - # 或 git switch -
4.2 分支合并与删除
合并分支:将指定分支合并到当前分支
git merge [分支名]变基合并:重写提交历史
git rebase [分支名]删除本地分支:
git branch -d [分支名] # 强制删除 git branch -D [分支名]删除远程分支:
git push origin --delete [分支名] # 或 git push origin :[分支名]
5. 标签管理
列出标签:
git tag创建标签:
# 轻量级标签 git tag [标签名] # 带注释的标签 git tag -a [标签名] -m "标签说明"在指定提交创建标签:
git tag [标签名] [commit hash]删除本地标签:
git tag -d [标签名]删除远程标签:
git push origin --delete [标签名] # 或 git push origin :refs/tags/[标签名]推送标签:
# 推送指定标签 git push origin [标签名] # 推送所有标签 git push origin --tags
6. 远程仓库
6.1 远程操作
查看远程仓库:
git remote -v添加远程仓库:
git remote add [远程名] [url]修改远程仓库 URL:
git remote set-url [远程名] [新url]删除远程仓库:
git remote remove [远程名]
6.2 推送与拉取
推送分支:
git push [远程名] [分支名] # 设置上游分支 git push -u [远程名] [分支名]拉取更新:
git pull [远程名] [分支名]强制推送:
git push --force [远程名] [分支名] # 安全的强制推送 git push --force-with-lease [远程名] [分支名]
7. 查看历史
7.1 日志查看
查看提交历史:
git log查看简要历史:
git log --oneline查看最近 n 次提交:
git log -n [次数]查看文件历史:
git log --follow [文件名]查看提交统计:
git log --stat查看详细 diff:
git log -p
7.2 其他查看命令
查看状态:
git status查看差异:
# 工作区与暂存区 git diff # 暂存区与上次提交 git diff --cached # 工作区与上次提交 git diff HEAD查看文件 blame:
git blame [文件名]查看引用日志:
git reflog
8. 撤销操作
8.1 工作区操作
恢复文件:
git checkout [文件名] # 恢复所有文件 git checkout .重置暂存区:
# 重置单个文件 git reset [文件名] # 重置所有文件 git reset
8.2 提交操作
软重置:保留工作区和暂存区
git reset --soft [commit hash]硬重置:重置工作区和暂存区
git reset --hard [commit hash]撤销提交:创建新的撤销提交
git revert [commit hash]
8.3 暂存操作
暂存变更:
git stash查看暂存列表:
git stash list恢复暂存:
# 恢复并删除暂存 git stash pop # 恢复但保留暂存 git stash apply删除暂存:
git stash drop [stash@{n}] # 删除所有暂存 git stash clear
9. 高级功能
9.1 子模块
添加子模块:
git submodule add [url] [路径]初始化子模块:
git submodule init git submodule update # 或一步完成 git submodule update --init --recursive
9.2 贮藏与清理
清理未跟踪文件:
# 查看将要删除的文件 git clean -n # 强制删除 git clean -f # 删除目录 git clean -fd垃圾回收:
git gc
10. 工作流程最佳实践
10.1 分支策略
- 主分支:
main/master- 稳定的生产代码 - 开发分支:
develop- 集成开发代码 - 特性分支:
feature/xxx- 开发新功能 - 修复分支:
fix/xxx- 修复 bug - 发布分支:
release/xxx- 准备发布
10.2 提交规范
推荐使用 Conventional Commits 规范:
<类型>(<范围>): <描述>
[可选的正文]
[可选的脚注]类型:
feat:新功能fix:bug 修复docs:文档更新style:代码风格调整refactor:代码重构test:测试相关chore:构建或依赖更新
10.3 常用别名
在 .gitconfig 中设置常用别名:
[alias]
co = checkout
br = branch
ci = commit
st = status
lg = log --oneline --graph --decorate
aa = add .
cm = commit -m
cp = cherry-pick
rb = rebase
pf = push --force-with-lease
pl = pull
dfs = diff --staged11. 常见问题解决
11.1 冲突解决
- 查看冲突文件:
git status - 编辑冲突文件:手动解决冲突
- 标记冲突已解决:
git add [冲突文件] - 完成合并:
git commit
11.2 回滚操作
回滚到指定版本:
git reset --hard [commit hash] git push --force撤销发布的提交:
git revert [commit hash] git push
12. 性能优化
- 压缩历史:
git gc --aggressive - 减少克隆大小:使用浅克隆和稀疏 checkout
- 配置缓存:
git config --global core.fscache true - 使用 SSH 协议:比 HTTPS 更快更安全
13. 实用工具
- Git LFS:管理大文件
- Git Flow:标准化分支流程
- GitHub Desktop:图形化 Git 客户端
- SourceTree:跨平台 Git 客户端
🎯 总结
Git 是现代软件开发中不可或缺的版本控制工具。掌握这些命令和最佳实践,将大大提高你的开发效率和代码管理能力。
记住:Git 的核心价值在于它能够跟踪代码的变化,让团队协作更加顺畅,同时为你的代码提供安全保障。
提示:使用 git help [命令] 查看具体命令的详细文档,例如 git help commit。
