我不小心犯了错误的分支。 如何删除该提交?


#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?相关推荐

  1. idea怎么把代码放到git_在IDEA中如何初始化Git,把项目推送到Git上

    在IDEA中如何初始化Git,把项目推送到Git上 登录Gitee(码云)账号,新建仓库 先按如下步骤简单新建一个仓库: 创建成功后,会出现下图中所示的原始文件: 在IDEA上的Terminal中进行 ...

  2. 如何将本地的项目推送至git仓库

    如何将本地的项目推送至git仓库 安装git sudo apt-get install git 配置git git config --global user.name "你的用户名" ...

  3. idea将项目推送到Git远程仓库、idea如何CloneGit远程仓库

    目录 1. 创建一个Git仓库来保存idea要推送的项目 2. 在idea中将项目推送到Git仓库中 2.1 第一步:点击VCS 2.2 第二步:点击VCS之后选择import下方的Create gi ...

  4. Git命令实现本地文件推送到git仓库

    Git命令实现本地文件推送到git仓库 前提: ①确定本机(windows环境)已经安装git(Git - Downloads) ②建立好远程Git仓库 1.在你想推送的文件夹下:右键→选择Git B ...

  5. iOS 推送,删除指定推送消息或者撤回某条推送

    iOS 推送,删除指定推送消息 远程推送经常会出现收到重复推送的问题,或者想删除某条推送消息的问题,本文将详细说明 静默推送 在 iOS10 之后 Apple 新增了静默推送的功能,使 App 可以在 ...

  6. Git回退已经提交commit的(还未推送push的)代码及撤回代码回退

    1.Git回退已经提交的代码 原文链接(原文写的是已经推送push的代码) http://t.csdn.cn/CDjgq 已经开始难过了,我提交后没有推送就按照上文提示进行了代码回退,结果idea里面 ...

  7. 撤消尚未推送的Git合并

    在我的master分支中,我在本地进行了git merge some-other-branch ,但从未将更改推送到原始master. 我不是要合并,所以我想撤消它. 合并后执行git status ...

  8. 【git】git拉取,git推送,git查看,git切换操作命令合集

    文章目录 git拉取 本地连接git账户仓库 本地拉取远程分支代码 git推送 提交代码到远程分支 git查看 查看当前在哪个分支上 查看远程分支 查看所有分支 查看文件在工作区的改动状态 查看文件内 ...

  9. 把本地已有的项目推送远程git仓库

    1.在远程git仓库新建一个仓库,最好和要推送的仓库同名 2.复制远程git仓库的地址 3.在本地仓库执行git init 4.执行git add 添加需要添加的文件 5.执行git commit 提 ...

最新文章

  1. 如何使用TensorFlow中的Dataset API
  2. Angular5学习笔记 - 虚拟RestfulApi配置与使用(六)
  3. java rgb hsl_RGB、HSB、HSL 互相转换算法
  4. 写linux程序测试吞吐量,Linux下测试磁盘性能(IO、吞吐量)
  5. mac怎么搭建php环境,Mac下快速搭建PHP开发环境
  6. ITK:生成具有正确面积的结构元素
  7. 海量数据处理(一) :位图与布隆过滤器的概念以及实现
  8. Python基础教程(008)--第一个Python程序
  9. 使用String.intern()减少内存使用
  10. 对象的浅拷贝和深拷贝
  11. windows下GitHub的SSH Key 配置
  12. html一行中怎么写空格,html – 用一行填写空格
  13. 用Python生成测试数据
  14. 数据结构与算法:十大排序算法之归并排序
  15. vue在个组件中给body加样式,或者给父级组件元素加样式
  16. fans域名启动全球调价
  17. 机器学习中的数学——距离定义(二十二):海林格距离(Hellinger Distance)
  18. Linux下通过开源软件fail2ban进行远程登录防护
  19. 推荐:雨林木风Linux
  20. 免费的微信签到抽奖——微信大屏幕

热门文章

  1. Android自定义流式布局-FlowLayout
  2. React Native之箭头函数和延展操作符(...)
  3. c语言中,关于指针变量前的*有两种表现形式:
  4. Java学习笔记17
  5. windows 下配置 react native 开发环境
  6. Flutter开发之iOS真机调试(六)
  7. java都界面相对布局_浏览器的重排和重绘
  8. 找出如下数组中最大的元素和最小的元素, a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}
  9. JS流程控制语句 二选一 (if...else语句) 语法: if(条件) { 条件成立时执行的代码} else {条件不成立时执行的代码}...
  10. PAT 10-2 删除字符串中的子串