Git 常用命令完整指南
1. 基础配置命令
配置用户信息
bash
# 全局配置 git config --global user.name "你的姓名" git config --global user.email "你的邮箱"# 为特定仓库配置 git config user.name "项目专用姓名"
使用场景:首次安装 Git 或在新电脑上设置
注意事项:用户信息会记录在提交历史中,务必使用真实信息
查看配置
bash
git config --list
2. 仓库初始化与克隆
初始化新仓库
bash
git init
克隆远程仓库
bash
git clone https://github.com/username/repo.git git clone https://github.com/username/repo.git my-project # 自定义目录名
使用场景:
git init
:从零开始新项目git clone
:获取已有项目代码
常见问题:
bash
# 克隆失败:权限不足 # 解决方法:使用 SSH 方式或提供访问令牌 git clone git@github.com:username/repo.git
3. 文件状态与提交管理
检查状态
bash
git status git status -s # 简洁模式
添加文件到暂存区
bash
git add filename.txt # 添加特定文件 git add . # 添加所有变化 git add *.js # 添加所有 js 文件 git add -p # 交互式选择添加
提交更改
bash
git commit -m "提交描述" git commit -am "描述" # 添加并提交所有已跟踪文件
使用场景示例:
bash
# 典型工作流程 echo "Hello World" > README.md git status # 查看未跟踪文件 git add README.md # 添加到暂存区 git status # 查看已暂存文件 git commit -m "添加README文档"
注意事项:
提交信息要清晰明了,说明本次提交的目的
避免使用
git add .
添加不必要的文件(如日志、临时文件)
4. 分支管理
查看分支
bash
git branch # 查看本地分支 git branch -r # 查看远程分支 git branch -a # 查看所有分支
创建与切换分支
bash
git branch feature-auth # 创建分支 git checkout feature-auth # 切换分支 git checkout -b feature-auth # 创建并切换分支
合并分支
bash
git checkout main git merge feature-auth # 将 feature-auth 合并到 main
删除分支
bash
git branch -d feature-auth # 删除已合并的分支 git branch -D feature-auth # 强制删除未合并分支
使用场景示例:
bash
# 功能开发流程 git checkout -b feature-user-profile # ... 开发代码 ... git add . git commit -m "实现用户资料页面" git checkout main git merge feature-user-profile git branch -d feature-user-profile
常见问题:
bash
# 错误:删除未合并分支 error: The branch 'feature-x' is not fully merged.# 解决方法:确认真的要删除,使用 -D 强制删除 git branch -D feature-x
5. 远程仓库操作
查看远程仓库
bash
git remote -v
添加远程仓库
bash
git remote add origin https://github.com/user/repo.git
推送到远程
bash
git push origin main git push -u origin main # 设置上游分支,后续可直接 git push
拉取更新
bash
git pull origin main # 拉取并合并 git fetch origin # 只获取不合并
使用场景示例:
bash
# 首次推送本地仓库到远程 git remote add origin https://github.com/user/repo.git git push -u origin main# 日常协作 git pull origin main # 获取最新代码 # ... 开发 ... git add . git commit -m "完成功能" git push origin main
常见问题:
bash
# 错误:推送被拒绝 ! [rejected] main -> main (non-fast-forward)# 解决方法:先拉取再推送 git pull origin main git push origin main# 或者强制推送(谨慎使用) git push -f origin main
6. 撤销与回退
撤销工作区修改
bash
git checkout -- filename.txt # 撤销单个文件修改 git checkout -- . # 撤销所有修改
撤销暂存区文件
bash
git reset HEAD filename.txt # 从暂存区移除文件
修改上次提交
bash
git commit --amend # 修改提交信息或添加漏掉的文件
回退到特定提交
bash
git reset --hard HEAD^ # 回退到上一个提交 git reset --hard commit_id # 回退到特定提交
使用场景示例:
bash
# 场景1:写错了代码想重来 git checkout -- src/app.js# 场景2:不小心添加了错误文件到暂存区 git add . git reset HEAD unwanted-file.txt# 场景3:提交信息写错了或漏了文件 git add forgotten-file.js git commit --amend -m "正确的提交信息"
注意事项:
git reset --hard
会永久删除未提交的更改,使用要谨慎已推送到远程的提交不要使用
git reset --hard
7. 查看历史与比较
查看提交历史
bash
git log git log --oneline # 简洁模式 git log --graph # 图形化显示 git log -p # 显示具体修改内容
比较差异
bash
git diff # 工作区与暂存区差异 git diff --staged # 暂存区与最新提交差异 git diff branch1 branch2 # 两个分支差异
使用场景:
代码审查前查看自己的修改
理解项目历史变更
排查引入 bug 的提交
8. 储藏临时修改
储藏工作进度
bash
git stash # 储藏当前修改 git stash save "描述" # 带描述的储藏 git stash list # 查看储藏列表 git stash pop # 应用最近储藏并删除 git stash apply # 应用储藏但不删除
使用场景示例:
bash
# 正在开发功能A,需要紧急修复bug git stash # 储藏功能A的代码 git checkout -b hotfix-bug # 创建修复分支 # ... 修复bug ... git add . git commit -m "紧急修复" git checkout feature-a git stash pop # 恢复功能A的代码
9. 标签管理
创建标签
bash
git tag v1.0.0 # 轻量标签 git tag -a v1.0.0 -m "版本1.0.0发布" # 附注标签
推送标签
bash
git push origin v1.0.0 # 推送特定标签 git push origin --tags # 推送所有标签
使用场景:项目版本发布标记
10. 高级操作
rebase 变基
bash
git rebase main # 将当前分支变基到main git rebase -i HEAD~3 # 交互式变基,合并最近3个提交
注意事项:不要在公共分支上对已推送的提交进行 rebase
cherry-pick 精选
bash
git cherry-pick commit_id # 将特定提交应用到当前分支
使用场景:将其他分支的某个修复提交应用到当前分支
常见问题汇总
1. 提交到错误分支
bash
# 解决方法: git log --oneline # 找到提交的commit id git reset --hard HEAD^ # 在错误分支回退 git checkout correct-branch git cherry-pick commit_id # 在正确分支应用提交
2. 冲突解决
bash
# 当 pull 或 merge 出现冲突时: git status # 查看冲突文件 # 手动编辑解决冲突 git add resolved-file.txt git commit # 完成合并提交
3. 找回误删的分支或提交
bash
# 查看历史操作记录 git reflog # 找到删除前的commit id,然后恢复 git checkout -b recovered-branch commit_id
4. 忽略文件配置
创建 .gitignore
文件:
text
# 日志文件 *.log# 依赖目录 node_modules/# 环境配置 .env .env.local# 系统文件 .DS_Store Thumbs.db
最佳实践
提交规范:每次提交只做一件事,提交信息清晰明了
分支策略:主分支保持稳定,功能开发使用特性分支
定期同步:经常 pull 最新代码,避免大规模冲突
代码审查:推送前检查自己的修改
备份重要修改:重要更改在本地另外备份
这份文档涵盖了 Git 的常用命令和实际工作场景,建议在实际操作中逐步掌握这些命令的使用。