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

【Git】 取消上一次commit或push

一、取消上一次commit


如果你需要取消上一次的 Git 提交,有几个不同的方法可以实现。其中包括撤消提交、提交到新的分支、使用 Git 回滚等等。

下面介绍三种方法:

方法1:使用 Git reset
使用 Git reset 命令来取消上一次提交:

git reset HEAD~1

这会把 HEAD 指针移回上一个提交(HEAD~1),并清除最后一次提交的内容。

git reset HEAD^

撤回两次或者n次

git reset HEAD~2

方法2:使用 Git revert
使用 Git revert 命令来撤消上一次提交并创建一个新的提交来撤消原来的提交:

git revert HEAD

这会创建一个新的提交来撤消提交之前的更改。在命令行中输入该命令后,你需要编辑撤消的提交信息,以便 Git 创建一个新的提交。

方法3:使用 Git checkout
还可以使用 Git checkout 命令来将工作树恢复到上一次提交的状态。这将清除所有未提交的更改,所以请确保你有一个备份:

git checkout HEAD~1

这会将工作树恢复到上一次提交的状态,也就是你上一次提交之前的状态。请注意,这里的修改都将被丢弃。

无论你使用的是哪种方法,请确保在撤消提交之前首先备份你的工作。这可以帮助你避免在操作过程中意外删除无法恢复的内容。

二、取消上一次push

如果你已经push了代码,并且想要撤回这个commit,可以通过以下步骤实现:

git push --force
首先,在使用git push命令时,需要加上--force参数,强制覆盖远程仓库上已经存在的commit。命令如下:

git push --force origin <branch_name>

其中,<branch_name>表示你要撤销的分支名称。

git reflog

如果在本地仓库没有回到该commit的上一个状态,需要使用git reflog命令找到该commit的SHA-1值。命令如下:

git reflog

该命令会列出整个Git仓库的提交历史记录,包括HEAD指针所指向的提交和已经被废弃的提交。

git reset
找到要回到的某个commit的SHA-1值,然后使用如下命令回到该commit的状态:

git reset --hard <commit_SHA-1>

其中,<commit_SHA-1>表示要回到的commit的SHA-1值。

git push --force
然后使用之前的推送命令进行推送,添加--force参数,覆盖远程仓库的历史提交记录。命令如下:

git push --force origin <branch_name>

提醒:使用git push --force命令可能会导致远程仓库、其他成员的仓库和历史版本产生不可逆的影响,因此操作时需要谨慎。一般情况下,在工作流中使用git revert命令回滚某个commit,以保证版本控制的完整性和可维护性。

三、扩展

git log  查看提交日志

commit参数

--mixed

不删除工作空间改动代码,撤销 commit,并撤销 git add . 操作

 git reset --mixed HEAD^ 效果等同 git reset HEAD^

--soft

不删除工作空间改动代码,撤销commit,不撤销git add .

--hard

删除工作空间改动代码,撤销commit,撤销git add .

--amend

修改注释, 进入vim编辑器, 改完:wq即可
 

http://www.lryc.cn/news/284619.html

相关文章:

  • 回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测
  • Spring Boot整合MyBatis
  • MySQL语句 | 在MySQL中解析JSON或将表中字段值合并为JSON
  • 基于springboot+vue的图书个性化推荐系统(前后端分离)
  • 将自然数序列剔除掉包含4的数字,求第k(1e12)个数是什么
  • 用Photoshop来制作GIF动画
  • 原地swap(inplace_swap)
  • 《JVM由浅入深学习九】 2024-01-15》JVM由简入深学习提升分(生产项目内存飙升分析)
  • 统计学-R语言-4.6
  • git提权
  • 实验四 SQL语言
  • 2024年简历石沉大海,别投了,软件测试岗位饱和了....
  • JS执行顺序
  • Vscode 上安装 Compilot
  • Spring集成MyBatis与MyBatis-Plus添加分页插件
  • Windows下载安装vcpkg并使用它来安装第三方库(visualstudio)
  • leetcode-2788按分隔符拆分字符串
  • 使用Ctrl+Alt+T快速打开Windows Terminal终端
  • Redis 消息队列和发布订阅
  • 去掉element-ui的el-table的所有边框+表头+背景颜色
  • 还在手动复制文章吗?教你如何一键将文章从notion同步到WordPress
  • uni-app的学习【第三节】
  • 全自动网页制作系统流星全自动网页生成系统重构版输入网页信息即可制作
  • 云轴科技ZStack位列IDC云系统软件市场教育行业TOP2
  • 从技术大会到面试舞台:程序猿的蜕变之旅!
  • VS2019+QT5.12.12+opencv+pcl1.12.1 显示点云,运行程序报错-无法定位程序输入点于链接库 如何解决?
  • Oracle-java下载、开源/商业许可证(收费、免费说明)、版本发布日志
  • docker安装 mysql 8.0.32
  • OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换
  • 【数据库学习】ClickHouse(ck)