4.8 KiB
4.8 KiB
Git 使用指南
基础概念
Git 是一个分布式版本控制系统,用于跟踪代码变更历史。
核心概念
- 仓库 (Repository): 存储项目所有文件和历史记录的地方
- 工作区 (Working Directory): 当前正在编辑的文件
- 暂存区 (Staging Area): 准备提交的文件暂存地
- 提交 (Commit): 保存项目快照的操作
基础配置
# 配置用户信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 查看配置
git config --list
常用命令
初始化和克隆
# 初始化新仓库
git init
# 克隆远程仓库
git clone <仓库地址>
文件操作
# 查看状态
git status
# 添加文件到暂存区
git add <文件名> # 添加单个文件
git add . # 添加所有文件
git add -A # 添加所有变更(包括删除)
# 提交变更
git commit -m "提交信息"
# 查看变更差异
git diff # 工作区与暂存区的差异
git diff --staged # 暂存区与最后提交的差异
历史查看
# 查看提交历史
git log
git log --oneline # 简洁格式
git log --graph # 图形化显示
# 查看文件变更历史
git log -p <文件名>
分支操作
# 查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
# 创建分支
git branch <分支名>
# 切换分支
git checkout <分支名>
git switch <分支名> # Git 2.23+ 新命令
# 创建并切换分支
git checkout -b <分支名>
git switch -c <分支名>
# 删除分支
git branch -d <分支名> # 安全删除
git branch -D <分支名> # 强制删除
合并操作
# 合并分支
git merge <分支名>
# 变基操作
git rebase <分支名>
远程仓库
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin <仓库地址>
# 推送到远程
git push origin <分支名>
git push -u origin <分支名> # 首次推送并设置上游
# 拉取远程变更
git pull origin <分支名>
git fetch origin # 只获取不合并
撤销操作
# 撤销工作区变更
git checkout -- <文件名>
git restore <文件名> # Git 2.23+ 新命令
# 撤销暂存区变更
git reset HEAD <文件名>
git restore --staged <文件名>
# 撤销提交
git reset --soft HEAD~1 # 保留变更在暂存区
git reset --mixed HEAD~1 # 保留变更在工作区
git reset --hard HEAD~1 # 完全撤销变更
# 创建反向提交
git revert <提交ID>
进阶技巧
标签管理
# 创建标签
git tag <标签名>
git tag -a <标签名> -m "标签说明"
# 查看标签
git tag
# 推送标签
git push origin <标签名>
git push origin --tags
暂存变更
# 暂存当前变更
git stash
# 查看暂存列表
git stash list
# 应用暂存变更
git stash apply # 应用最新暂存
git stash pop # 应用并删除最新暂存
git stash apply stash@{n} # 应用指定暂存
# 删除暂存
git stash drop
git stash clear # 清空所有暂存
重写历史
# 交互式变基
git rebase -i HEAD~n # 修改最近n个提交
# 修改最后一次提交
git commit --amend
# 压缩提交
git rebase -i HEAD~n # 使用squash命令
工作流程建议
基本工作流
git status- 检查当前状态git add- 添加变更到暂存区git commit- 提交变更git push- 推送到远程仓库
功能开发流程
git checkout -b feature/新功能- 创建功能分支- 开发和提交变更
git checkout main- 切换到主分支git merge feature/新功能- 合并功能分支git branch -d feature/新功能- 删除功能分支
最佳实践
- 频繁提交: 小步快跑,经常提交变更
- 清晰的提交信息: 使用描述性的提交信息
- 使用分支: 为每个功能或修复创建分支
- 保持主分支稳定: 不要直接在主分支上开发
- 定期同步: 经常拉取远程变更
- 审查变更: 提交前检查变更内容
常见问题解决
合并冲突
# 查看冲突文件
git status
# 手动解决冲突后
git add <冲突文件>
git commit
忘记切换分支
# 将变更移到新分支
git stash
git checkout -b <新分支>
git stash pop
误删文件
# 恢复已删除的文件
git checkout HEAD -- <文件名>
有用的别名配置
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'
这样就可以使用 git st 代替 git status 等。