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

如何删除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的


在这里插入图片描述


http://www.kler.cn/a/600064.html

相关文章:

  • 量子计算的黎明:从理论到现实的突破之旅
  • Spring Boot 与 MyBatis Plus 整合 KWDB 实现 JDBC 数据访问
  • Spring IOC容器详解:深入理解控制反转与依赖注入
  • HAL库中串口中断开启
  • 基于Spring Boot的可信捐赠系统的设计与实现(LW+源码+讲解)
  • 美团 客户端前端 实习面经(2024凉经)
  • 一、基础知识 —— CMake 基础
  • 群体智能优化算法-山羚羊优化算法(Mountain Gazelle Optimizer, MGO,含Matlab源代码)
  • 使用TripoAI实现图生模型及文生模型
  • xcode中移除安装的package dependency
  • LeetCode-215. 数组中的第K个最大元素
  • [从零开始学习JAVA] IO流
  • Qt 重入和线程安全
  • QT网络通信的接口与使用
  • 1.23只是起点?XBIT流动性引擎引爆跨链革命
  • 高效PDF翻译解决方案:多引擎支持+格式零丢失
  • 试试智能体工作流,自动化搞定运维故障排查
  • 《Python机器学习基础教程》第3讲:回归算法与模型优化
  • 前沿分享|处理LLM幻觉问题-CoN|笔记链:增强检索增强语言模型的鲁棒性
  • 【2025】基于python+flask的篮球交流社区平台设计与实现(源码、万字文档、图文修改、调试答疑)