当前位置: 首页 > news >正文

git常用修改命令

1. 代码回退与历史修改

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

git revert

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

git commit --amend 

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
git log --oneline --graph -n 5       # 简洁图形化历史
git log -p -S "keyword"              # 搜索代码变更
git log --since="2024-01-01" --author="John" # 条件过滤

 git show

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

4. 暂存与恢复

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

git checkout HEAD -- <file>

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单词级差异显示

补丁操作

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

 

命令对比表

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

进阶技巧

  1. 组合操作

    # 重置到某个提交但保留工作区修改
    git reset --hard a1b2c3d && git stash apply

  2. 精确回退

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

# 显示谁最后修改了某行代码
git blame -L 10,15 file.txt

相关文章:

  • DDD架构设计
  • 数据结构与算法学习导航
  • 【python】pysharm常用快捷键使用-(1)
  • Linux 常用命令总结
  • 个人博客系统后端 - 用户信息管理功能实现指南(上)
  • PTA:模拟EXCEL排序
  • XCZU7EG‑L1FFVC1156I 赛灵思XilinxFPGA ZynqUltraScale+ MPSoC EG
  • jdk node redis nginx mysql直接部署
  • 性能测试方案设计思路总结
  • ADVB发送器设计
  • api护照查验-GO国内护照查验接口-身份安全卫士
  • 操作教程|通过DataEase制作MaxKB系统数据大屏
  • 【前端】跟着maxkb学习流程图画法
  • 【含文档+PPT+源码】基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现
  • 读书笔记 -- MySQL架构
  • 音视频学习 - ffmpeg 编译与调试
  • webgl入门实例-09索引缓冲区示例
  • 【华为】OSPF震荡引起CPU占用率高怎么解决?
  • SvelteKit 最新中文文档教程(21)—— 最佳实践之图片
  • Python-基于协同过滤的推荐系统详解:从经典方法到前沿技术
  • 面对非专业人士,科学家该如何提供建议
  • 王受文已任全国工商联党组成员
  • 九家企业与上海静安集中签约,投资额超10亿元
  • “三德子”赵亮直播间卖“德子土鸡”,外包装商标实为“德子土”
  • 北京:下调个人住房公积金贷款利率
  • 巴基斯坦军方:印度袭击已致巴方31人死亡