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
相关推荐
宵时待雨10 分钟前
linux笔记归纳24:多路转接select
linux·服务器·笔记·高并发
RISCV_Explorer12 分钟前
技术指南:从总线协议到软件可见行为——RISC-V 多核缓存一致性的 Linux 实践
linux·缓存·risc-v
louisgeek28 分钟前
Git submodule 子模块
git
ShineWinsu29 分钟前
对于Redis:Redis特性以及应用场景的解析
linux·c++·redis·缓存·高并发·分布式系统·key-value
imDwAaY34 分钟前
6篇文章讲清楚Git:Git 实用技巧:暂存现场、挑选提交与定位 Bug (5/6)
git·后端
程序员-Benothing39 分钟前
Linux系统启动流程详解:BIOS/UEFI、GRUB、initramfs、systemd
linux·运维·服务器
imDwAaY41 分钟前
6篇文章讲清楚Git:Git 团队开发实践:从 Pull Request 到版本发布 (6/6)
git·后端
余槐i1 小时前
-m 2g 反而更早 OOM:Docker 内存计数与宿主机空闲口径差异
java·linux·docker·性能优化·cgroup
傲世仙尊1 小时前
线程池收尾-回调单例与可重入线程安全
linux·安全
牢姐与蒯1 小时前
Linux信号(二).信号产生续 && 信号保存
linux·运维·服务器·ubuntu