Git 命令详细使用记录
前言
Git 是目前世界上最流行的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建。它以速度快、分布式、分支管理灵活等特点著称,已成为软件开发团队的标准工具。
本文详细记录了 Git 的核心命令及使用场景,从基础配置到高级操作,涵盖日常开发中的常见需求,适合新手入门和进阶用户查阅参考。
一、基础配置
1.1 安装与初始化
bash
git --version
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.editor "code --wait"
git config --global init.defaultBranch main配置说明:
| 配置项 | 说明 |
|---|---|
user.name | 用户名,用于提交记录 |
user.email | 邮箱,用于提交记录 |
core.editor | 默认编辑器 |
init.defaultBranch | 默认分支名 |
1.2 查看配置
bash
git config --list
git config user.name
git config --global --edit二、仓库操作
2.1 创建仓库
bash
mkdir my-project
cd my-project
git init2.2 克隆仓库
bash
git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-folder
git clone --depth=1 https://github.com/user/repo.git参数说明:
| 参数 | 说明 |
|---|---|
--depth=1 | 只克隆最近一次提交,加快速度 |
2.3 关联远程仓库
bash
git remote add origin https://github.com/user/repo.git
git remote -v
git remote rename origin upstream
git remote remove upstream三、文件操作
3.1 查看状态
bash
git status
git status -s
git status --short状态标识:
| 标识 | 说明 |
|---|---|
A | 新增文件 |
M | 修改文件 |
D | 删除文件 |
?? | 未追踪文件 |
3.2 添加文件
bash
git add filename.txt
git add .
git add --all
git add -u参数说明:
| 参数 | 说明 |
|---|---|
. | 添加当前目录及子目录所有文件 |
--all | 添加所有变更(包括删除) |
-u | 只添加已追踪文件的变更 |
3.3 提交更改
bash
git commit -m "commit message"
git commit -m "feat: add new feature" -m "Detailed description"
git commit -am "commit message"
git commit --amend
git commit --amend --no-edit参数说明:
| 参数 | 说明 |
|---|---|
-m | 提交信息 |
-am | 添加并提交已追踪文件 |
--amend | 修改最近一次提交 |
3.4 撤销操作
bash
git restore filename.txt
git restore .
git restore --staged filename.txt
git restore --staged .场景说明:
| 命令 | 场景 |
|---|---|
git restore file | 撤销工作区修改 |
git restore --staged file | 撤销暂存区修改 |
四、分支管理
4.1 查看分支
bash
git branch
git branch -a
git branch -v
git branch --merged
git branch --no-merged参数说明:
| 参数 | 说明 |
|---|---|
-a | 查看所有分支(含远程) |
-v | 显示分支最后一次提交 |
--merged | 显示已合并到当前分支的分支 |
4.2 创建分支
bash
git branch feature-branch
git checkout -b feature-branch
git checkout -b feature-branch origin/main
git switch -c feature-branch4.3 切换分支
bash
git checkout main
git switch main
git checkout -4.4 合并分支
bash
git checkout main
git merge feature-branch
git merge --no-ff feature-branch
git merge --squash feature-branch参数说明:
| 参数 | 说明 |
|---|---|
--no-ff | 禁用快进合并,保留分支历史 |
--squash | 压缩提交为单次提交 |
4.5 删除分支
bash
git branch -d feature-branch
git branch -D feature-branch
git push origin --delete feature-branch参数说明:
| 参数 | 说明 |
|---|---|
-d | 删除已合并分支 |
-D | 强制删除分支 |
4.6 分支重命名
bash
git branch -m old-name new-name
git branch -M old-name new-name五、远程操作
5.1 拉取更新
bash
git fetch
git fetch origin
git pull
git pull origin main
git pull --rebase参数说明:
| 参数 | 说明 |
|---|---|
git fetch | 拉取远程更新但不合并 |
git pull | 拉取并合并 |
--rebase | 变基方式拉取 |
5.2 推送更新
bash
git push
git push origin main
git push -u origin main
git push --force
git push --force-with-lease参数说明:
| 参数 | 说明 |
|---|---|
-u | 设置上游追踪关系 |
--force | 强制推送 |
--force-with-lease | 安全强制推送 |
5.3 同步远程分支
bash
git remote prune origin
git fetch --prune
git pull --prune六、查看历史
6.1 提交日志
bash
git log
git log --oneline
git log --oneline -n 10
git log --graph
git log --graph --oneline --all
git log --since="2026-01-01"
git log --until="2026-06-30"
git log --author="Your Name"
git log --grep="fix"
git log -- filename.txt参数说明:
| 参数 | 说明 |
|---|---|
--oneline | 单行显示 |
--graph | 图形化显示分支 |
--since/--until | 时间范围 |
--author | 指定作者 |
--grep | 搜索提交信息 |
6.2 查看差异
bash
git diff
git diff --staged
git diff HEAD
git diff branch1 branch2
git diff commit1 commit2
git diff HEAD~1 HEAD
git diff HEAD^ HEAD场景说明:
| 命令 | 场景 |
|---|---|
git diff | 工作区与暂存区差异 |
git diff --staged | 暂存区与仓库差异 |
git diff HEAD~1 HEAD | 最近两次提交差异 |
6.3 查看提交详情
bash
git show commit-hash
git show HEAD
git show HEAD~1
git show commit-hash -- filename.txt七、标签管理
7.1 创建标签
bash
git tag v1.0.0
git tag -a v1.0.0 -m "Release version 1.0.0"
git tag -a v1.0.0 commit-hash参数说明:
| 参数 | 说明 |
|---|---|
-a | 创建附注标签 |
-m | 标签说明 |
7.2 查看标签
bash
git tag
git tag -l "v1.*"
git show v1.0.07.3 推送标签
bash
git push origin v1.0.0
git push origin --tags7.4 删除标签
bash
git tag -d v1.0.0
git push origin --delete v1.0.0八、进阶操作
8.1 变基(Rebase)
bash
git rebase main
git rebase -i HEAD~3
git rebase --continue
git rebase --abort
git rebase --skip交互式变基常用命令:
| 命令 | 说明 |
|---|---|
pick | 保留提交 |
reword | 修改提交信息 |
edit | 修改提交内容 |
squash | 合并到前一个提交 |
fixup | 合并到前一个提交(丢弃信息) |
drop | 删除提交 |
8.2 重置(Reset)
bash
git reset HEAD~1
git reset --soft HEAD~1
git reset --mixed HEAD~1
git reset --hard HEAD~1
git reset --hard origin/main参数说明:
| 参数 | 工作区 | 暂存区 | 仓库 |
|---|---|---|---|
--soft | 不变 | 不变 | 修改 |
--mixed | 不变 | 修改 | 修改 |
--hard | 修改 | 修改 | 修改 |
8.3 恢复(Restore)
bash
git restore filename.txt
git restore --source=HEAD~1 filename.txt
git restore --source=commit-hash filename.txt8.4 归档
bash
git archive --format=tar --prefix=release/ HEAD > release.tar
git archive --format=zip --prefix=release/ HEAD > release.zip
git archive --format=zip --prefix=release/ v1.0.0 > release-v1.0.0.zip8.5 子模块
bash
git submodule add https://github.com/user/repo.git path/to/submodule
git submodule init
git submodule update
git submodule update --remote
git submodule foreach git pull origin main九、工作流模式
9.1 Git Flow
bash
git checkout -b develop main
git checkout -b feature/login develop
git checkout develop
git merge --no-ff feature/login
git branch -d feature/login
git checkout -b release/1.0.0 develop
git checkout main
git merge --no-ff release/1.0.0
git tag -a v1.0.0
git checkout develop
git merge --no-ff release/1.0.0
git branch -d release/1.0.0
git checkout -b hotfix/1.0.1 main
git checkout main
git merge --no-ff hotfix/1.0.1
git tag -a v1.0.1
git checkout develop
git merge --no-ff hotfix/1.0.1
git branch -d hotfix/1.0.19.2 GitHub Flow
bash
git checkout main
git pull origin main
git checkout -b feature/my-feature
git add .
git commit -m "feat: add my feature"
git push -u origin feature/my-feature
# 创建 Pull Request
# 代码审查通过后合并
git checkout main
git pull origin main
git branch -d feature/my-feature9.3 Trunk Based Development
bash
git checkout main
git pull origin main
git checkout -b short-lived-feature
git add .
git commit -m "feat: small change"
git checkout main
git pull origin main
git merge short-lived-feature --no-ff
git push origin main
git branch -d short-lived-feature十、常见踩坑与问题排查
10.1 冲突解决
bash
git status
git diff filename.txt
# 手动编辑文件解决冲突
git add filename.txt
git commit冲突标记说明:
<<<<<<< HEAD
当前分支内容
=======
合并分支内容
>>>>>>> feature-branch10.2 误删文件恢复
bash
git restore filename.txt
git checkout HEAD -- filename.txt
git restore --source=HEAD~1 filename.txt10.3 误提交恢复
bash
git reset --soft HEAD~1
git reset --hard HEAD~1
git revert HEAD10.4 忘记拉取导致冲突
bash
git stash
git pull origin main
git stash pop
# 解决冲突
git add .
git commit10.5 用户名/邮箱错误
bash
git commit --amend --author="Correct Name <correct@email.com>"
git filter-branch --env-filter '
if [ "$GIT_AUTHOR_EMAIL" = "wrong@email.com" ]; then
GIT_AUTHOR_EMAIL="correct@email.com"
GIT_AUTHOR_NAME="Correct Name"
GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
fi
' -- --all十一、最佳实践
11.1 提交信息规范
bash
git commit -m "feat: add user login functionality"
git commit -m "fix: resolve null pointer exception"
git commit -m "docs: update API documentation"
git commit -m "refactor: simplify authentication logic"
git commit -m "test: add unit tests for login"提交类型:
| 类型 | 说明 |
|---|---|
feat | 新功能 |
fix | Bug 修复 |
docs | 文档更新 |
refactor | 代码重构 |
test | 测试添加 |
chore | 构建/工具更新 |
11.2 .gitignore 配置
bash
node_modules/
dist/
build/
.env
.env.local
.DS_Store
*.log
.vscode/
.idea/11.3 分支命名规范
bash
feature/user-authentication
bugfix/login-error
hotfix/critical-security
release/v1.0.0
docs/api-update11.4 定期清理
bash
git gc
git prune
git remote prune origin
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d十二、常用工具推荐
12.1 可视化工具
- GitKraken:功能强大的 Git 客户端
- Sourcetree:Atlassian 出品的可视化工具
- GitHub Desktop:GitHub 官方客户端
- VS Code Git 扩展:内置 Git 支持
12.2 辅助命令
bash
git alias.lg="log --oneline --graph --all --decorate"
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.unstage "restore --staged"
git config --global alias.last "log -1 HEAD"12.3 学习资源
十三、全文总结
本文详细记录了 Git 的核心命令和使用场景,包括:
- 基础配置:用户名、邮箱、编辑器配置
- 仓库操作:初始化、克隆、远程关联
- 文件操作:添加、提交、撤销
- 分支管理:创建、切换、合并、删除
- 远程操作:拉取、推送、同步
- 查看历史:日志、差异、提交详情
- 标签管理:创建、推送、删除
- 进阶操作:变基、重置、恢复
- 工作流模式:Git Flow、GitHub Flow、Trunk Based
- 常见问题:冲突解决、误操作恢复
- 最佳实践:提交规范、分支命名、定期清理
掌握这些命令后,可以高效地进行版本控制,协同开发。建议根据团队实际情况选择合适的工作流模式,并养成良好的提交习惯。
