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

如何删除git上最后一次提交,Git日常使用操作说明。

文章目录

    • 情况一:仅本地未推送的提交
    • 情况二:已推送到远程仓库的提交
    • ⚠️ 重要注意事项
    • 操作流程对比
    • 更多Git使用方法参见:
      • 一、仓库管理
      • 二、基础操作
      • 三、分支管理
      • 四、远程仓库操作
      • 五、撤销与回退
      • 六、查看差异
      • 七、临时保存修改
      • 八、标签管理
      • 九、配置文件
      • 十、忽略文件配置
      • 🔧 常用组合操作
      • ⚠️ 注意事项

要删除 Git 上的最后一次提交,根据是否已推送到远程仓库可分为两种情况处理:


情况一:仅本地未推送的提交

解决方案:

# 保留工作区修改(仅撤销提交记录)
git reset --soft HEAD~1

# 或完全丢弃最后一次提交(包括代码修改)
git reset --hard HEAD~1

情况二:已推送到远程仓库的提交

解决方案:

# 1. 本地回退到上一个提交
git reset --hard HEAD~1

# 2. 强制覆盖远程仓库(危险操作!)
git push --force-with-lease origin 分支名

⚠️ 重要注意事项

  1. 强制推送风险
    --force-with-lease--force 更安全,但仍会覆盖远程历史记录
    ▶️ 适用于个人分支/私有仓库
    ❌ 避免在多人协作的主分支使用

  2. 团队协作场景替代方案

    # 使用 revert 创建反向提交(保留历史记录)
    git revert HEAD
    git push origin 分支名
    
  3. 同步其他成员的本地仓库
    如果他人已拉取旧提交,需执行:

    git fetch
    git reset --hard origin/分支名
    

操作流程对比

操作类型命令适用场景历史记录影响
本地撤销提交git reset HEAD~1未推送的错误提交完全删除提交
强制覆盖远程git push --force私有分支/紧急修复重写远程历史
安全撤销(推荐)git revert + 正常推送团队协作分支新增反向提交

建议优先使用 git revert 方案,除非明确需要修改历史记录。

更多Git使用方法参见:

以下是 Git 使用中 最常用的指令及使用方法,涵盖日常开发的大部分场景:


一、仓库管理

命令说明示例
git init初始化新仓库git init
git clone <url>克隆远程仓库git clone https://github.com/user/repo.git

二、基础操作

命令说明示例
git add <file>添加文件到暂存区git add . (添加全部文件)
git commit -m "message"提交暂存区内容git commit -m "Fix bug"
git status查看工作区状态git status
git log查看提交历史git log --oneline (简洁模式)

三、分支管理

命令说明示例
git branch查看本地分支git branch -a (查看所有分支)
git checkout <branch>切换分支git checkout dev
git checkout -b <new-branch>创建并切换新分支git checkout -b feature-login
git merge <branch>合并分支git merge dev
git branch -d <branch>删除本地分支git branch -d old-feature

四、远程仓库操作

命令说明示例
git remote -v查看远程仓库地址git remote -v
git pull拉取远程更新git pull origin main
git push推送本地提交git push origin dev
git fetch获取远程更新(不合并)git fetch --all

五、撤销与回退

命令说明示例
git restore <file>撤销工作区修改git restore index.html
git reset --soft HEAD~1撤销提交(保留修改)回退到上一个提交
git reset --hard HEAD~1彻底丢弃最后一次提交慎用!会丢失修改
git revert <commit-id>创建反向提交撤销历史记录git revert abc123

六、查看差异

命令说明示例
git diff查看未暂存的修改git diff
git diff --staged查看已暂存的修改git diff --staged
git diff <commit1> <commit2>比较两个提交的差异git diff abc123 def456

七、临时保存修改

命令说明示例
git stash暂存当前修改git stash save "WIP"
git stash pop恢复最近暂存的修改git stash pop
git stash list查看暂存列表git stash list

八、标签管理

命令说明示例
git tag查看所有标签git tag -l "v1.*"
git tag <tagname>创建轻量标签git tag v1.0.0
git push origin <tagname>推送标签到远程git push origin v1.0.0

九、配置文件

命令说明示例
git config --global user.name "name"设置全局用户名git config --global user.name "John"
git config --global user.email "email"设置全局邮箱git config --global user.email "john@example.com"

十、忽略文件配置

  1. 创建 .gitignore 文件
  2. 添加需要忽略的文件模式:
    # 示例
    *.log
    node_modules/
    .env
    

🔧 常用组合操作

  1. 撤销所有未提交的修改

    git restore .  # 撤销工作区修改
    git clean -fd  # 删除未跟踪的文件/目录
    
  2. 修改最后一次提交

    git add .                  # 添加遗漏的文件
    git commit --amend -m "新提交信息"
    
  3. 同步远程已删除的分支

    git fetch --prune
    

⚠️ 注意事项

  1. 强制推送 (--force):仅限个人分支使用,团队协作慎用
  2. 分支合并冲突:解决冲突后需 git add + git commit
  3. .gitignore 文件需在文件未被跟踪前添加才生效

掌握这些指令可覆盖 90% 的日常开发需求,建议搭配图形化工具(如 VS Code 的 Git 功能)使用更高效!

🚀 你已掌握改变世界的力量 🚀

每一次 git commit 都是进步的印记,
每一次 git push 都在向未来交付价值。
代码世界没有「完美提交」,只有持续迭代的勇气——
那些让你抓狂的 merge conflict,终将成为登顶的阶梯!

💡 记住

  • 遇到 error 时,你只是在解锁新成就的路上
  • 每个 bug 都是系统在提醒:「此处可优化」
  • 当你想 git reset 重来时,宇宙都在为你喝彩

🌱 今日最好的代码,永远是明天的起点
git branch 开拓创新之路,
git revert 优雅修正方向,
git log 见证自己破茧成蝶的轨迹。

🌈 写给未来的你
当你在终端敲下第1000次命令时,
会感谢今天这个坚持学习的自己。
代码即诗行,终端即画布——
你正在创造数字时代的艺术品

🔥 保持 pushing,星辰大海的版本库等你提交!
(别忘了给自己一个温暖的 git commit -m "我爱这滚烫的编程人生" 💻✨)

上一篇:MFC中CString类型是如何怎么转std::string的


在这里插入图片描述

相关文章:

  • python高级4
  • Mysql从入门到精通day3————记一次连接查询的武装渗透
  • 【二分查找 树状数组 差分数组 离散化 】P6172 [USACO16FEB] Load Balancing P|省选-
  • 牛顿-拉夫逊迭代法原理与除法器的软件与硬件实现
  • 六十天Linux从0到项目搭建第四天(通配符命令、其他命令、压缩解压工具、shell的感性理解、linux权限解析)
  • 从零实现本地文生图部署(Stable Diffusion)
  • 常见框架漏洞攻略-ThinkPHP篇
  • 人工智能AI术语
  • 排序--快排--Hoare法
  • BSides Vancouver 2018靶机通关教学
  • Wireshark网络抓包分析使用详解
  • 【从零实现Json-Rpc框架】- 入门准备篇
  • java项目之校园美食交流系统(源码+文档)
  • python --face_recognition(人脸识别,检测,标题,特征提取)
  • C++指针基础与应用详解
  • JAVA 中的 ArrayList 工作原理
  • 鸿蒙开发新利器(二):媒体查询方法封装全解析
  • RabbitMQ 详细原理解析
  • 蓝桥杯备考:学会使用方向向量
  • 计算机三级Linux应用与开发技术(最终版了)
  • 马克思主义理论研究教学名师系列访谈|丁晓强:马克思主义学者要更关注社会现实的需要
  • “75后”袁达已任国家发改委秘书长
  • 哈莉·贝瑞、洪常秀等出任戛纳主竞赛单元评委
  • 京津冀“飘絮之困”如何破解?专家坦言仍面临关键技术瓶颈
  • 金科股份:去年营收约275亿元,今年确保所有项目“零烂尾”
  • 成都警方:在地铁公共区域用改装设备偷拍女乘客,男子被行拘