当前位置: 首页 > 知识库问答 >
问题:

如何在git中删除最后两个提交,并在工作目录中获得我的提交1?

甄德寿
2023-03-14

以下是场景:

  1. 在一个小型的Ubuntu网络服务器上,我有一个git服务器正在运行。该网站已从 git 存储库中签出。我添加并提交了大量更改。Git diff显示了50个更新的代码文件和20000个图像文件。我没有太注意这个想法,这些应该被忽略,我的错。有点愚蠢,但我认为将所有更改作为批量提交是最快的。我们称之为提交 A

#提交git add.git Commit-m“今年迄今的变化”

我发现我忘记排除工作/输出文件(大量生成的图像)。除了这些文件(大约20000个),我还有大约50个代码更改的文件。

在阅读了在线和git手册之后,我明白了最好的选择是更新.gitignore并生成一个文件列表来删除和删除缓存。这应该从提交中删除,但不会从本地文件夹中删除。让这个提交 B

<代码> #提交B vi。git ignore git ls-files-ci-exclude-standard-z | xargs-0 git RM-cache git add。git commit -m "从提交历史中清除生成的文件"

git push origin master计数对象:19219,已完成。错误:pack对象死于信号9错误:pack-objects死于奇怪的错误错误:子进程死于信号9故障:死于信号9出错:无法将某些refs推送到'/srv/gitrepositories/xxxx。git’

关于错误9的这个问题的答案表明,这可能是由于git内存不足造成的。

我的选择?

  • 是提交A

共有1个答案

西门飞星
2023-03-14

是的,您可以使用git resetHEAD~2从历史记录中永久清除最后2次提交,同时将更改保留在工作目录中,然后git push-f强制将更改的历史记录推送到远程

如果您的回购与其他人共享,则不建议更改您的提交历史记录。

 类似资料:
  • 本文向大家介绍Git 提交后,包括了Git 提交后的使用技巧和注意事项,需要的朋友参考一下 示例 该挂钩在commit-msg挂钩之后立即被调用。它不能更改git commit操作的结果,因此主要用于通知目的。 该脚本不带任何参数,并且其退出状态不会以任何方式影响提交。

  • 问题内容: 我正在尝试从表中删除很多行。我想尝试将要删除的行放入游标中,然后继续对游标的每一行进行获取,删除,提交操作,直到它为空。 在下面的代码中,我们是行,并将其放入。 我如何修改下面的代码以从图片中删除TYPE,而只是简单地对光标本身进行操作即可。 问题答案: 为什么要分批提交?那只会减慢您的处理速度。除非有其他会话试图修改要删除的行,否则由于其他原因,这似乎是有问题的,最有效的方法是简单地

  • 我创建了一个repo,在里面创建了一个文件,在文件中放入一些内容,并提交了文件。现在,我希望看到该提交的差异,理想情况下,它应该显示添加的文件和添加到其中的行。 但是,返回

  • 如何从最新提交中删除文件?

  • 本文向大家介绍git提交空目录的方法,包括了git提交空目录的方法的使用技巧和注意事项,需要的朋友参考一下 前言 git和 svn不同,仅仅跟踪文件的变动,不跟踪目录。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。 只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留

  • 问题内容: 有什么有效的方法来获取Go中两个切片的交集吗? 我想避免嵌套for循环之类的解决方案 字符串顺序无关紧要 问题答案: 是的,有几种不同的解决方法。.这是一个可以优化的示例。 现在上面定义的交集方法将只运行在的,比如你的例子。您可以在理论上创建一个定义,这个样子的,但是你会依靠反射和类型转换,这样就可以比较,这将增加延迟和使您的代码更难阅读。对于您关心的每种类型,维护和阅读以编写单独的函