git常用修改命令

1. 代码回退与历史修改

git reset
模式 命令示例 作用范围 适用场景
--soft git reset --soft HEAD~1 仅移动 HEAD 指针 重新提交之前的修改
--mixed git reset HEAD~1 (默认) 重置暂存区 取消已 add 但未提交的文件
--hard git reset --hard a1b2c3d 彻底丢弃工作区和暂存区 彻底回退到某个版本(慎用!)

git revert

复制代码
git revert <commitid>          # 生成一个反向提交
git revert -m 1 <merge_commit> # 撤销合并提交
  • 特点:安全撤销(保留历史),适合已推送的提交

git commit --amend

bash 复制代码
git commit --amend             # 修改最近提交信息
git commit --amend --no-edit   # 只修改提交内容

注意:仅限未推送的提交!

2. 分支管理

git branch
命令 作用
git branch -f main HEAD~3 强制移动分支指针
git branch -d feature 删除已合并分支
git branch -D hotfix 强制删除未合并分支
git branch --set-upstream-to=origin/main 绑定远程分支

3. 提交与变更查看

git log
bash 复制代码
git log --oneline --graph -n 5       # 简洁图形化历史
git log -p -S "keyword"              # 搜索代码变更
git log --since="2024-01-01" --author="John" # 条件过滤

git show

bash 复制代码
git show HEAD~2:src/main.c          # 查看历史文件内容
git show a1b2c3d --stat             # 显示提交影响的文件

4. 暂存与恢复

git stash
bash 复制代码
git stash push -m "WIP: login feature"  # 暂存并命名
git stash list                         # 查看暂存栈
git stash apply stash@{1}              # 恢复指定暂存
git stash drop stash@{0}               # 删除暂存

git checkout HEAD -- <file>

bash 复制代码
git checkout HEAD -- config.yml  # 从最近提交恢复文件
git checkout a1b2c3d -- .       # 恢复整个目录到历史版本

5. 差异比较与补丁

git diff
命令 比较范围
git diff 工作区 vs 暂存区
git diff --cached 暂存区 vs 最新提交
git diff HEAD~2 HEAD 两个提交间的差异
git diff --word-diff 单词级差异显示

补丁操作

bash 复制代码
git diff > changes.patch       # 生成补丁
git apply --check changes.patch # 测试应用
git apply changes.patch        # 应用补丁
git format-patch HEAD~2        # 生成可邮件发送的补丁

命令对比表

场景 推荐命令 替代方案
撤销本地修改 git checkout HEAD -- file git restore file
修改提交信息 git commit --amend git rebase -i
安全撤销提交 git revert git reset + force push(危险)
暂存临时改动 git stash 手动复制文件

进阶技巧

  1. 组合操作

    bash 复制代码
    # 重置到某个提交但保留工作区修改
    git reset --hard a1b2c3d && git stash apply
  2. 精确回退

    bash 复制代码
    # 仅回退某个文件到指定提交
    git checkout a1b2c3d -- src/main.c
  3. 排查问题

bash 复制代码
# 显示谁最后修改了某行代码
git blame -L 10,15 file.txt
相关推荐
比昨天多敲两行24 分钟前
Linux基础开发工具(下)
linux·运维·服务器
九成宫1 小时前
Git 与远程仓库实操记录:克隆、配置、分支推送与问题排查
笔记·git·ssh
笨笨饿2 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
cn_lyg2 小时前
Linux的入门级常用操作命令
linux·运维·服务器
就叫飞六吧3 小时前
TOML vs YAML:为什么 Cargo 选择 TOML?
linux·运维·服务器
IMPYLH3 小时前
Linux 的 test 命令
linux·运维·服务器·chrome·bash
xrui584 小时前
2026实战:深度解析 Gemini 3.1 镜像站函数调用在自动化运维工单中的应用
linux·服务器·网络
HackTwoHub4 小时前
Linux 内核史诗级本地提权 全网深度复现、原理完整分析( CVE-2026-31431)
linux·运维·安全·web安全·网络安全·代码审计·安全架构
她说彩礼65万4 小时前
C语言 文件
linux·服务器·c语言
txg6665 小时前
自动驾驶领域热点简报(2026-04-26 ~ 2026-05-03)
linux·人工智能·自动驾驶