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 的常用命令和实际工作场景,建议在实际操作中逐步掌握这些命令的使用。