- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我执行了 git rebase master
在我的分支上,直到我将它推送到 Remote 后才意识到这不是我想要的。只有我自己和另外 1 个人在从事该项目,所以我知道他们没有提取最新的更改。
在 StackOverflow 上阅读其他问题,它说使用 git reflog
然后 git reset --hard HEAD@{n}
到 rebase 之前。我这样做是为了转到我在 rebase 之前创建的提交,但它没有将事情恢复到以前的状态。
我错过了一步吗?有没有办法让另一个人强制 push 他的 repo 以将事情恢复到原来的状态?
谢谢
最佳答案
如 Makoto already noted ,您可能不应该费心撤消此 rebase :这可能是您想要的。尽管如此,请继续阅读以了解如何撤消它。
使用分支的 reflog,因为它更容易阅读。 (HEAD
reflog 具有相同的信息,但其中包含更多内容,因此更难找到您要查找的内容。)
例如,如果我刚刚重新定位 mybranch
, 我会看见:
$ git reflog mybranch
nnnnnnn mybranch@{0}: rebase finished: refs/heads/mybranch onto biguglysha1
ooooooo mybranch@{1}: commit: some sort of commit message
...
mybranch@{1}
因此(目前)与
ooooooo
同义,旧缩写为SHA-1。每次你对分支做一些事情(比如
git reset
)
@{...}
里面的数字部分会改变,而 SHA-1 是永久的,所以使用 SHA-1(完整或缩写)进行剪切和粘贴会更安全一些。
$ git checkout mybranch # if needed
$ git reset --hard ooooooo # or mybranch@{1}
rebase
只需复制提交,然后移动标签。在 rebase 之后,但在重置之前,提交图看起来像这样,其中
A
通过
C
是“你的”提交:
A - B - C <-- (only in reflog now)
/
... - o - o - o - A' - B' - C' <-- mybranch (after rebase)
git reset
simple1 删除当前分支标签并将其粘贴到提供的 SHA-1 上(如果需要,首先将 reflog 名称转换为 SHA-1)。因此,在
reset
之后:
A - B - C <-- mybranch, plus older reflog
/
... - o - o - o - A' - B' - C' <-- (only in reflog now)
reset
,rebase 制作的提交副本是仅在 reflog 条目中找到的“废弃”副本。原件已被遗弃,现在在
mybranch
下认领。再次。
A
B
和
C
这样的字母,并在副本上添加像
A'
这样的添加剂)。 SHA-1 保证是唯一的 3 并且是永久的,但是带有长箭头的标签会一直被删除和重新指向。 (如果你在白板上这样做,你通常应该使用黑色作为提交图,使用一种颜色或多种颜色作为标签。)
git reset
不只是移动标签,除非您添加一些命令行标志。默认情况下,它移动标签并重置索引;与
--hard
,它会移动标签并重置索引并清除您的工作树。与
--soft
它只是移动标签,单独留下索引和工作树。与 git 一样,还有更多的标志可以进一步扭曲其含义,但这些是三大标志:
--soft
, 没什么又名
--mixed
, 和
--hard
.
git gc
自动为你。您可以强制提前删除它们,但很少有充分的理由去打扰。
关于git - 撤消 Git Rebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490288/
示例:我在 C 列中有一个公式,它是 A 和 B 列中值的函数。当我更改 A 或 B 中的值并按 Enter 键时,C 中的值会自动更新。但是,当我 Ctrl-Z 时,C 列中的值不会自动恢复到我更改
我使用 Eclipse 进行几乎所有语言的编程。我也喜欢用于快速编辑的 vim 快捷方式,所以我安装了 vrapper。问题是当我写了很多代码,我只想撤消一些小东西。它撤消了很多代码块,而不是 2 或
假设我们无意中将命名分支( ABC ) merge 到我们的 default 中。分支。 hg rollback不是一个选择,因为从那以后有几次提交。 有没有办法撤销这个? 最佳答案 您将需要 Mq
有什么办法可以实现这一点吗?我正在使用一个分页插件,它读取 ul 中的 li 数量,并确定要吐出的编号链接的数量。 最佳答案 您可能想使用 .hide() 并检查 li 是否可见。 这可以通过以下方式
我需要能够检测是否触发了“撤销”,以及它是否对我的 RichTextBox 的内容产生了影响。 当我在 RichTextBox 中键入内容,然后按 Ctrl+Z 时,windows 似乎会为我处理撤消
我的每个 php 页面的顶部都有以下代码: foreach ($_POST as $key => $value) { if (!is_array($value)) {
我正在为一个类的项目工作,我们应该在该类中实现文本编辑器的基本功能,包括撤消和重做。我目前的撤消/重做功能正常工作,唯一的问题是,我在尝试从 Command 中释放内存时遇到 valgrind 错误。
假设我有以下两个变量: bob1 = u'bob\xf0\xa4\xad\xa2' bob2 = 'bob\xf0\xa4\xad\xa2' 如何让 bob1 的值成为 bob2 的值?也就是说,我如
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 1 年前。 社区在 1 年前 审查了是否重
我已经成功地实现了 touchesMoved 并且它正在正确地绘制线条,现在我在实现删除方法时遇到了问题,请在我缺少的地方帮助我。 - (void)touchesMoved:(NSSet *)touc
我使用的是 Visual Studio 2015。TFS 的版本是 2012(版本 11.0.51106.1)。有没有办法撤销 unshelve,其他用户的 shelfset,有 unshelve 命
我正在使用 intelliJ 在功能分支上工作,我想将我的团队在 master 上所做的更改集成到我的分支中,但我搞砸了。 我检查了 master,从 Git pop 窗口中我选择了功能分支并选择了“
我的情况:我克隆了一个存储库(内核的源文件)。然后检查了一个分支,并构建了内核。二进制文件已存储在工作树的子目录中。现在,我想放弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。 我
我正在使用 SourceTree,我在“工作副本更改”部分下有一些修改过的文件,这些文件正在被跟踪,如图中的黄色图标所示。但我放弃了这些变化。现在如何恢复这些更改? 最佳答案 如果项目未暂存(在顶部
撤消特定提交的最简单方法是: 不在头部或头部 已推送到远程。 因为如果不是最新的提交, git reset HEAD 没用。并且因为它已经被推送到远程, git rebase -i 和 git reb
我有一个 Pdf 文件,每页包含几张幻灯片,包括文本(不仅是图像)。 该 pdf 可能是使用 pdfnup 创建的。 我可以恢复 pdfnup 操作,以便每张幻灯片都显示在一页上吗? 最佳答案 据我所
我正在进行合并。合并后,我提交所有文件而没有冲突。然后我解析单个文件并提交它们。如果我犯了一个错误,我该如何重做解析(即使我还没有提交解析文件)? 与预期相反,我无法还原文件。合并后恢复到任何步骤时,
当之后进行了 17 次提交时,如何撤消不应该进行的提交? 背景:我团队的一个同事单独工作了一个月,现在是时候将他们的分支 merge 到 master 上了。但是,其中一个提交包含一个太大的文件,无法
我正在尝试使用Command Pattern在我的应用程序中实现撤消/重做功能。我遇到了一个问题。 为了说明这一点,让我们假设您可以使用我的应用程序2D配置文件创建(任意数量)。 然后,可以从这些2D
我有一个工作流,我将描述如下: [ Dump(query) ] ---+ | +---> [ Parquet(d
我是一名优秀的程序员,十分优秀!