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