如何删除未推送的git commit?
我不小心犯了错误的分支。 如何删除该提交?
#1楼
删除最近的提交,并保留已完成的工作:
git reset --soft HEAD~1
删除最近的提交, 破坏您已完成的工作:
git reset --hard HEAD~1
#2楼
进行git rebase -i FAR_ENOUGH_BACK
并删除不需要的提交行。
#3楼
如果要将该提交移至另一个分支,请获取有问题的提交的SHA
git rev-parse HEAD
然后切换当前分支
git checkout other-branch
然后cherry-pick
other-branch
git cherry-pick <sha-of-the-commit>
#4楼
不要删除它:仅执行一次git cherry-pick
就足够了。
但是,如果您在错误的分支上进行了几次提交,那么git rebase --onto
:
假设您有:
x--x--x--x <-- master\-y--y--m--m <- y branch, with commits which should have been on master
,然后可以标记master
并将其移动到您想要的位置:
git checkout mastergit branch tmpgit checkout ygit branch -f masterx--x--x--x <-- tmp\-y--y--m--m <- y branch, master branch
,将y分支重置在原本应位于的位置:
git checkout ygit reset --hard HEAD~2 # ~1 in your case, # or ~n, n = number of commits to cancelx--x--x--x <-- tmp\-y--y--m--m <- master branch^|-- y branch
,最后移动您的提交(重新应用它们,进行新的提交)
git rebase --onto tmp y mastergit branch -D tmpx--x--x--x--m'--m' <-- master\-y--y <- y branch
#5楼
供您参考,我相信您不仅可以使用git reset --hard,还可以使用以下命令从当前分支“硬切”提交:
git checkout -B <branch-name> <SHA>
实际上,如果您不关心签出,则可以使用以下方法将分支设置为所需的任意值:
git branch -f <branch-name> <SHA>
例如,这是从分支删除提交的一种编程方式,以便将新提交复制到分支(使用rebase)。
假设您有一个与主服务器断开连接的分支,因为您已从其他位置获取了源并将其转储到该分支中。
现在,您在其中应用了更改的分支中,我们将其称为“主题”。
现在,您将创建主题分支的副本,然后将其重新基于位于分支“ dump”中的源代码转储:
git branch topic_duplicate topic
git rebase --onto dump master topic_duplicate
现在,您的更改将基于“转储”的起点重新应用到分支topic_duplicate中,但仅应用自“ master”以来发生的提交。 因此,自从母版以来所做的更改现在重新应用在“转储”的顶部,但结果以“ topic_duplicate”结尾。
然后,您可以通过执行以下操作将“ dump”替换为“ topic_duplicate”:
git branch -f dump topic_duplicate
git branch -D topic_duplicate
或搭配
git branch -M topic_duplicate dump
或者只是丢弃转储
git branch -D dump
清除当前的“ topic_duplicate”之后,也许您也可以选择。
我要说的是,如果您要基于其他祖先更新当前的“重复”分支,则必须首先通过执行git reset --hard <last-commit-to-retain>
删除先前的“樱桃精选”提交git reset --hard <last-commit-to-retain>
或git branch -f topic_duplicate <last-commit-to-retain>
,然后通过变基或摘樱桃来复制其他提交(从主主题分支)。
变基仅在已经具有提交的分支上起作用,因此,每次需要这样做时,都需要复制主题分支。
采摘更容易:
git cherry-pick master..topic
因此,整个序列将归结为:
git reset --hard <latest-commit-to-keep>
git cherry-pick master..topic
当您的主题重复分支已签出时。 这将从当前重复项中删除先前选择的提交,而只是将当前“转储”(不同祖先)顶部“主题”中发生的所有更改重新应用。 在使用不同的“下游”母版检查您的本地更改是否仍然还适用于此时,将开发基于“真实”上游母版似乎是一种相当方便的方法。 或者,您可以只生成一个差异,然后将其应用到任何Git源代码树之外。 但是通过这种方式,您可以保留基于发行版本的最新修改(修补)版本,而实际开发却与真正的上游母版相对。
因此,仅演示一下:
- reset将使您的分支指向另一个提交(--hard还会签出上一个提交,--soft将添加的文件保留在索引中(如果再次提交则将提交),而默认文件(--mixed)不会签出上一个提交(清除本地更改),但会清除索引(尚未添加任何提交内容)
- 您可以强制分支指向其他提交
- 您可以在立即检查该提交的同时执行此操作
- 对当前分支中存在的提交进行重新计算
- 摘樱桃意味着从其他分支复制
希望这对某人有帮助。 我本来打算重写它,但现在无法管理。 问候。
#6楼
我不知道为什么我找到的最佳答案只是在评论中! ( 由丹妮丝以86票赞成 )
git reset --hard origin
此命令将使本地存储库与远程存储库同步,从而消除您对本地存储库所做的所有更改。
如何删除未推送的git commit?相关推荐
- idea怎么把代码放到git_在IDEA中如何初始化Git,把项目推送到Git上
在IDEA中如何初始化Git,把项目推送到Git上 登录Gitee(码云)账号,新建仓库 先按如下步骤简单新建一个仓库: 创建成功后,会出现下图中所示的原始文件: 在IDEA上的Terminal中进行 ...
- 如何将本地的项目推送至git仓库
如何将本地的项目推送至git仓库 安装git sudo apt-get install git 配置git git config --global user.name "你的用户名" ...
- idea将项目推送到Git远程仓库、idea如何CloneGit远程仓库
目录 1. 创建一个Git仓库来保存idea要推送的项目 2. 在idea中将项目推送到Git仓库中 2.1 第一步:点击VCS 2.2 第二步:点击VCS之后选择import下方的Create gi ...
- Git命令实现本地文件推送到git仓库
Git命令实现本地文件推送到git仓库 前提: ①确定本机(windows环境)已经安装git(Git - Downloads) ②建立好远程Git仓库 1.在你想推送的文件夹下:右键→选择Git B ...
- iOS 推送,删除指定推送消息或者撤回某条推送
iOS 推送,删除指定推送消息 远程推送经常会出现收到重复推送的问题,或者想删除某条推送消息的问题,本文将详细说明 静默推送 在 iOS10 之后 Apple 新增了静默推送的功能,使 App 可以在 ...
- Git回退已经提交commit的(还未推送push的)代码及撤回代码回退
1.Git回退已经提交的代码 原文链接(原文写的是已经推送push的代码) http://t.csdn.cn/CDjgq 已经开始难过了,我提交后没有推送就按照上文提示进行了代码回退,结果idea里面 ...
- 撤消尚未推送的Git合并
在我的master分支中,我在本地进行了git merge some-other-branch ,但从未将更改推送到原始master. 我不是要合并,所以我想撤消它. 合并后执行git status ...
- 【git】git拉取,git推送,git查看,git切换操作命令合集
文章目录 git拉取 本地连接git账户仓库 本地拉取远程分支代码 git推送 提交代码到远程分支 git查看 查看当前在哪个分支上 查看远程分支 查看所有分支 查看文件在工作区的改动状态 查看文件内 ...
- 把本地已有的项目推送远程git仓库
1.在远程git仓库新建一个仓库,最好和要推送的仓库同名 2.复制远程git仓库的地址 3.在本地仓库执行git init 4.执行git add 添加需要添加的文件 5.执行git commit 提 ...
最新文章
- 如何使用TensorFlow中的Dataset API
- Angular5学习笔记 - 虚拟RestfulApi配置与使用(六)
- java rgb hsl_RGB、HSB、HSL 互相转换算法
- 写linux程序测试吞吐量,Linux下测试磁盘性能(IO、吞吐量)
- mac怎么搭建php环境,Mac下快速搭建PHP开发环境
- ITK:生成具有正确面积的结构元素
- 海量数据处理(一) :位图与布隆过滤器的概念以及实现
- Python基础教程(008)--第一个Python程序
- 使用String.intern()减少内存使用
- 对象的浅拷贝和深拷贝
- windows下GitHub的SSH Key 配置
- html一行中怎么写空格,html – 用一行填写空格
- 用Python生成测试数据
- 数据结构与算法:十大排序算法之归并排序
- vue在个组件中给body加样式,或者给父级组件元素加样式
- fans域名启动全球调价
- 机器学习中的数学——距离定义(二十二):海林格距离(Hellinger Distance)
- Linux下通过开源软件fail2ban进行远程登录防护
- 推荐:雨林木风Linux
- 免费的微信签到抽奖——微信大屏幕
热门文章
- Android自定义流式布局-FlowLayout
- React Native之箭头函数和延展操作符(...)
- c语言中,关于指针变量前的*有两种表现形式:
- Java学习笔记17
- windows 下配置 react native 开发环境
- Flutter开发之iOS真机调试(六)
- java都界面相对布局_浏览器的重排和重绘
- 找出如下数组中最大的元素和最小的元素, a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}
- JS流程控制语句 二选一 (if...else语句) 语法: if(条件) { 条件成立时执行的代码} else {条件不成立时执行的代码}...
- PAT 10-2 删除字符串中的子串