Skip to content

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 init

2.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-branch

4.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.0

7.3 推送标签

bash
git push origin v1.0.0
git push origin --tags

7.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.txt

8.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.zip

8.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.1

9.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-feature

9.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-branch

10.2 误删文件恢复

bash
git restore filename.txt
git checkout HEAD -- filename.txt
git restore --source=HEAD~1 filename.txt

10.3 误提交恢复

bash
git reset --soft HEAD~1
git reset --hard HEAD~1
git revert HEAD

10.4 忘记拉取导致冲突

bash
git stash
git pull origin main
git stash pop
# 解决冲突
git add .
git commit

10.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新功能
fixBug 修复
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-update

11.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 的核心命令和使用场景,包括:

  1. 基础配置:用户名、邮箱、编辑器配置
  2. 仓库操作:初始化、克隆、远程关联
  3. 文件操作:添加、提交、撤销
  4. 分支管理:创建、切换、合并、删除
  5. 远程操作:拉取、推送、同步
  6. 查看历史:日志、差异、提交详情
  7. 标签管理:创建、推送、删除
  8. 进阶操作:变基、重置、恢复
  9. 工作流模式:Git Flow、GitHub Flow、Trunk Based
  10. 常见问题:冲突解决、误操作恢复
  11. 最佳实践:提交规范、分支命名、定期清理

掌握这些命令后,可以高效地进行版本控制,协同开发。建议根据团队实际情况选择合适的工作流模式,并养成良好的提交习惯。