git-命令大全

用户配置

git config --global user.name "你的名字"

git config --global user.email "你的邮箱"

git config --global core.editor vim # 设置默认编辑器

查看配置

git config --list

git config user.name

git config --global --list

别名设置

git config --global alias.co checkout

git config --global alias.br branch

git config --global alias.ci commit

git config --global alias.st status

📊 仓库操作

初始化

git init # 初始化本地仓库

git clone # 克隆远程仓库

git clone --depth 1 # 浅克隆(只下载最近一次提交)

远程仓库

git remote add origin # 添加远程仓库

git remote -v # 查看远程仓库

git remote show origin # 查看远程仓库详情

git remote remove origin # 移除远程仓库

git remote rename old new # 重命名远程仓库

📈 状态与日志

状态查询

git status # 查看状态

git status -s # 简洁状态

git status --ignored # 显示忽略文件

日志查看

git log # 查看提交历史

git log --oneline # 单行显示

git log --graph # 图形化显示

git log --stat # 显示文件变更统计

git log -p # 显示具体改动

git log --since="2 weeks ago" # 按时间筛选

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

git log -S "关键词" # 搜索代码变更

git log --grep="关键词" # 搜索提交信息

git log --oneline -5 # 最近5条

📤 提交相关

添加文件

git add # 添加特定文件

git add . # 添加所有文件

git add -A # 添加所有变化

git add -u # 更新已跟踪文件

git add -p # 交互式添加

提交

git commit -m "提交信息" # 提交

git commit -am "提交信息" # 添加并提交(已跟踪文件)

git commit --amend # 修改最后一次提交

git commit --amend --no-edit # 修改提交但不改信息

git commit --allow-empty # 空提交

撤销提交

git reset --soft HEAD~1 # 撤销提交但保留修改

git reset --mixed HEAD~1 # 撤销提交和暂存

git reset --hard HEAD~1 # 彻底撤销提交

git revert # 创建反向提交

说明:默认HEAD,例如可以直接git reset --hard

🌿 分支管理

查看分支

git branch # 查看本地分支

git branch -r # 查看远程分支

git branch -a # 查看所有分支

git branch -v # 查看分支最后提交

git branch --merged # 查看已合并分支

git branch --no-merged # 查看未合并分支

创建/删除分支

git branch # 创建分支

git checkout -b # 创建并切换

git switch -c # 创建并切换(Git 2.23+)

git branch -d # 删除分支

git branch -D # 强制删除

git branch -m # 重命名当前分支

切换分支

git checkout # 切换分支

git switch # 切换分支(Git 2.23+)

git checkout - # 切换到上一个分支

合并分支

git merge # 合并分支

git merge --no-ff # 禁用快进合并

git merge --squash # 压缩合并

git merge --abort # 中止合并

变基

git rebase # 变基

git rebase -i HEAD~3 # 交互式变基

git rebase --continue # 继续变基

git rebase --abort # 中止变基

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

🔄 远程操作

拉取

git fetch # 获取远程更新

git fetch origin # 从特定远程获取

git fetch --prune # 获取并清理已删除的远程分支

git pull # 拉取并合并

git pull origin main # 从特定分支拉取

git pull --rebase # 拉取并使用变基

说明:git pull 默认拉取合并当前分支

推送

git push # 推送到远程

git push origin # 推送到特定分支

git push -u origin # 设置上游并推送

git push --force # 强制推送(危险!)

git push --force-with-lease # 安全强制推送

git push --tags # 推送标签

git push origin --delete # 删除远程分支

git push origin : # 删除远程分支(旧语法)

🏷️ 标签管理

git tag # 查看标签

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

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

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

git push origin v1.0.0 # 推送标签

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

git checkout v1.0.0 # 切换到标签

git show v1.0.0 # 查看标签详情

📦 暂存与清理

储藏

git stash # 储藏当前修改

git stash save "说明" # 储藏并添加说明

git stash list # 查看储藏列表

git stash pop # 应用并删除最新储藏

git stash apply # 应用但不删除

git stash drop # 删除最新储藏

git stash clear # 清空所有储藏

git stash show -p # 查看储藏内容

清理

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

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

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

git clean -x # 删除包括忽略的文件

🔍 比较与查找

比较

git diff # 工作区与暂存区比较

git diff --staged # 暂存区与仓库比较

git diff HEAD # 工作区与最新提交比较

git diff # 两个提交比较

git diff --name-only # 只显示文件名

git diff --stat # 显示统计信息

#保存到当前目录的文件

git diff > diff_output_$(date +%Y%m%d_%H%M%S).txt

#保存到指定路径

git diff > /path/to/your/directory/diff_output.txt

#追加到文件(不覆盖)

git diff >> /path/to/directory/diff_output.txt

#比较两个提交之间的差异

git diff commit1 commit2 > /path/to/diff.txt

#比较工作目录和暂存区的差异

git diff > changes.patch

#比较暂存区和最新提交的差异

git diff --cached > staged_changes.patch

#比较两个分支

git diff branch1...branch2 > branch_diff.txt

查找

git grep "关键词" # 在工作区搜索

git grep -n "关键词" # 显示行号

git grep --cached "关键词" # 在暂存区搜索

git blame # 查看文件每行修改历史

git show # 查看提交详情

git show : # 查看文件在特定提交的内容

⏪ 撤销与恢复

撤销工作区修改

git checkout -- # 撤销文件修改

git checkout . # 撤销所有修改

git restore # 恢复文件(Git 2.23+)

撤销暂存

git reset HEAD # 从暂存区移除

git restore --staged # 取消暂存(Git 2.23+)

恢复删除的文件

git checkout HEAD -- # 恢复被删除的文件

git restore --source=HEAD # 从指定提交恢复

🎯 高级操作

二分查找

git bisect start # 开始二分查找

git bisect bad # 标记为坏版本

git bisect good # 标记为好版本

git bisect reset # 重置二分查找

子模块

git submodule add # 添加子模块

git submodule update --init # 初始化子模块

git submodule update # 更新子模块

重写历史

git filter-branch # 重写历史(危险!)

git replace # 替换对象

归档

git archive --format=zip HEAD > project.zip # 打包

🆘 帮助与调试

git help # 查看命令帮助

git -h # 查看简要帮助

git reflog # 查看操作记录

git fsck # 检查仓库完整性

git gc # 垃圾回收

git verify-commit # 验证GPG签名

💡 实用别名示例

添加到 ~/.gitconfig

alias

co = checkout

br = branch

ci = commit

st = status

unstage = reset HEAD --

last = log -1 HEAD

lg = log --oneline --graph --decorate

hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

type = cat-file -t

dump = cat-file -p

🎨 美化输出

彩色输出

git config --global color.ui auto

自定义log格式

git log --pretty=format:'%C(yellow)%h %C(cyan)%ad %C(green)%an %Creset%s' --date=short

📋 常用工作流

典型开发流程

git clone # 克隆项目

git checkout -b feature # 创建功能分支

... 开发 ...

git add . # 添加修改

git commit -m "添加功能" # 提交

git push origin feature # 推送

创建PR/MR,合并到主分支

更新本地

git checkout main

git pull origin main

git checkout feature

git rebase main # 或 git merge main

相关推荐
CoderOnly2 小时前
git fork之后,怎么继续pull
git
ROLL.72 小时前
Git和Repo
java·git·安卓
火车叼位2 小时前
告别发整个文件!用 Git Patch 优雅地传递代码变更
git
念恒123063 小时前
Linux基础开发工具(git篇)
linux·c语言·git
i建模4 小时前
git克隆加速方法大全
git
无限进步_4 小时前
【C++】私有虚函数与多态:访问权限不影响动态绑定
开发语言·c++·ide·windows·git·算法·visual studio
蜡台4 小时前
Git stash、reset、 cherry-pick 、revert 、reflog 常用命令使用说明
大数据·git·搜索引擎
君穆南15 小时前
基于 NFS 与 Rsync 实现跨服务器 Seafile 数据平滑迁移实战
linux·运维·git
Jurio.16 小时前
本机开发 + 多机执行的极简远端运行工具
linux·git·python·github·远程工作