OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  git-essentials:版本控制必备的 Git 命令与工作流指南

git-essentials:版本控制必备的 Git 命令与工作流指南

 
  beacon ·  2026-02-02 12:53:39 · 15 次点击  · 0 条评论  

名称: git-essentials
描述: 版本控制、分支管理与协作必备的 Git 命令与工作流。
主页: https://git-scm.com/
元数据: {"clawdbot":{"emoji":"🌳","requires":{"bins":["git"]}}}


Git 核心命令

版本控制与团队协作必备的 Git 命令。

初始设置

# 配置用户信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

# 初始化仓库
git init

# 克隆仓库
git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git 自定义目录名

基础工作流

暂存与提交

# 查看状态
git status

# 添加文件到暂存区
git add 文件.txt
git add .
git add -A  # 包含删除在内的所有变更

# 提交变更
git commit -m "提交说明"

# 一步完成添加与提交
git commit -am "说明"

# 修改上一次提交
git commit --amend -m "新说明"
git commit --amend --no-edit  # 保留原提交信息

查看变更

# 显示未暂存的变更
git diff

# 显示已暂存的变更
git diff --staged

# 查看指定文件的变更
git diff 文件.txt

# 比较两次提交间的差异
git diff 提交1 提交2

分支与合并

分支管理

# 列出分支
git branch
git branch -a  # 包含远程分支

# 创建分支
git branch 功能分支名

# 切换分支
git checkout 功能分支名
git switch 功能分支名  # 现代替代命令

# 创建并切换分支
git checkout -b 功能分支名
git switch -c 功能分支名

# 删除分支
git branch -d 分支名
git branch -D 分支名  # 强制删除

# 重命名分支
git branch -m 旧分支名 新分支名

合并

# 将分支合并到当前分支
git merge 功能分支名

# 禁用快进合并
git merge --no-ff 功能分支名

# 中止合并
git merge --abort

# 显示合并冲突文件
git diff --name-only --diff-filter=U

远程操作

管理远程仓库

# 列出远程仓库
git remote -v

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 修改远程仓库地址
git remote set-url origin https://github.com/user/new-repo.git

# 移除远程仓库
git remote remove origin

与远程同步

# 从远程获取更新
git fetch origin

# 拉取变更(获取 + 合并)
git pull

# 使用变基方式拉取
git pull --rebase

# 推送变更
git push

# 推送新分支并建立追踪
git push -u origin 分支名

# 强制推送(谨慎使用!)
git push --force-with-lease

历史与日志

查看历史

# 显示提交历史
git log

# 每行显示一个提交
git log --oneline

# 图形化显示
git log --graph --oneline --all

# 最近 N 次提交
git log -5

# 按作者筛选
git log --author="作者名"

# 按时间范围筛选
git log --since="2 weeks ago"
git log --until="2024-01-01"

# 文件历史
git log -- 文件.txt

搜索历史

# 搜索提交信息
git log --grep="bug 修复"

# 搜索代码变更
git log -S "函数名"

# 显示每行代码的最后修改者
git blame 文件.txt

# 二分查找引入问题的提交
git bisect start
git bisect bad
git bisect good 提交哈希

撤销变更

工作区

# 丢弃文件的修改
git restore 文件.txt
git checkout -- 文件.txt  # 旧方法

# 丢弃所有修改
git restore .

暂存区

# 从暂存区移除文件
git restore --staged 文件.txt
git reset HEAD 文件.txt  # 旧方法

# 清空暂存区
git reset

提交

# 撤销最后一次提交(保留修改)
git reset --soft HEAD~1

# 撤销最后一次提交(丢弃修改)
git reset --hard HEAD~1

# 反转提交(创建新提交)
git revert 提交哈希

# 重置到指定提交
git reset --hard 提交哈希

储藏

# 储藏当前修改
git stash

# 带说明的储藏
git stash save "进行中的工作"

# 列出储藏栈
git stash list

# 应用最新储藏
git stash apply

# 应用并移除储藏
git stash pop

# 应用指定储藏
git stash apply stash@{2}

# 删除储藏
git stash drop stash@{0}

# 清空储藏栈
git stash clear

变基

# 将当前分支变基到主分支
git rebase main

# 交互式变基(最近 3 次提交)
git rebase -i HEAD~3

# 解决冲突后继续变基
git rebase --continue

# 跳过当前提交
git rebase --skip

# 中止变基
git rebase --abort

标签

# 列出标签
git tag

# 创建轻量标签
git tag v1.0.0

# 创建附注标签
git tag -a v1.0.0 -m "版本 1.0.0"

# 为指定提交打标签
git tag v1.0.0 提交哈希

# 推送标签
git push origin v1.0.0

# 推送所有标签
git push --tags

# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

高级操作

拣选提交

# 应用特定提交
git cherry-pick 提交哈希

# 拣选但不提交
git cherry-pick -n 提交哈希

子模块

# 添加子模块
git submodule add https://github.com/user/repo.git 路径/

# 初始化子模块
git submodule init

# 更新子模块
git submodule update

# 克隆包含子模块的仓库
git clone --recursive https://github.com/user/repo.git

清理

# 预览将被删除的文件
git clean -n

# 删除未跟踪文件
git clean -f

# 删除未跟踪文件和目录
git clean -fd

# 包含忽略的文件
git clean -fdx

常用工作流

功能分支工作流:

git checkout -b feature/新功能
# 进行修改
git add .
git commit -m "添加新功能"
git push -u origin feature/新功能
# 创建 PR,合并后:
git checkout main
git pull
git branch -d feature/新功能

热修复工作流:

git checkout main
git pull
git checkout -b hotfix/紧急修复
# 修复问题
git commit -am "修复紧急问题"
git push -u origin hotfix/紧急修复
# 合并后:
git checkout main && git pull

同步复刻仓库:

git remote add upstream https://github.com/原始仓库/repo.git
git fetch upstream
git checkout main
git merge upstream/main
git push origin main

实用别名

添加到 ~/.gitconfig

[alias]
    st = status
    co = checkout
    br = branch
    ci = commit
    unstage = reset HEAD --
    last = log -1 HEAD
    visual = log --graph --oneline --all
    amend = commit --amend --no-edit

最佳实践

  • 频繁提交,后续完善(使用交互式变基)
  • 编写有意义的提交信息
  • 使用 .gitignore 排除无需跟踪的文件
  • 切勿强制推送到共享分支
  • 开始工作前先拉取最新代码
  • 使用功能分支,避免直接在主干修改
  • 合并前先变基功能分支
  • 使用 --force-with-lease 替代 --force

常见问题处理

撤销意外提交:

git reset --soft HEAD~1

恢复已删除分支:

git reflog
git checkout -b 分支名 <提交哈希>

修正错误的提交信息:

git commit --amend -m "正确的提交信息"

解决合并冲突:

# 编辑文件解决冲突
git add 已解决的文件
git commit  # 或 git merge --continue

参考文档

官方文档:https://git-scm.com/doc
Pro Git 书籍:https://git-scm.com/book
可视化 Git 指南:https://marklodato.github.io/visual-git-guide/

15 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 39 ms
Developed with Cursor