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
相关推荐
Johny_Zhao2 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8503 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
好好学习啊天天向上4 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
tan180°5 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
典学长编程5 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9985 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
独行soc8 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
BD_Marathon8 小时前
Ubuntu下Tomcat的配置
linux·ubuntu·tomcat
饥饿的半导体9 小时前
Linux快速入门
linux·运维
BD_Marathon9 小时前
Ubuntu:Tomcat里面的catalina.sh
linux·ubuntu·tomcat