- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经在一个项目上工作了几个月,定期提交。我使用 Heroku 来存储我的应用程序。我推送到 Heroku,然后我使用 Git GUI 将我的文件回滚到 12 月 7 日,然后我强制将其推送到 Heroku。我试图恢复一个特定的文件夹,但没有意识到它会恢复整个目录。
然后我意识到我丢失了从 12 月 7 日开始的所有提交。
我试过 git lost-found,我的目录在 reflog 中有大约 20 个头。我正在寻找一个特定的提交,我有来自 Heroku 的哈希。它是 8d4f84a,但是当我执行 git checkout 8d4f84a 时,它给我错误消息“在工作树中找不到未知的修订版或路径。”
我执行了一次 heroku 回滚,这将我在 Heroku 上的文件恢复到之前推送的状态,但我无法克隆这些文件。
至此,我是否失去了所有工作?
编辑:附加的 reflog,充满了可追溯到 12 月 7 日及之后的旧提交
eb64161 HEAD@{0}: checkout: moving from 4d6a18311433a9bee737eda9bf6114f8bc35fa2c
4d6a183 HEAD@{1}: checkout: moving from master to HEAD@{3}
eb64161 HEAD@{2}: checkout: moving from eb64161f29fff57ab861880c4cd1cdf7641c39bf
eb64161 HEAD@{3}: checkout: moving from master to master@{2013-01-19}
eb64161 HEAD@{4}: pull: Fast-forward
4d6a183 HEAD@{5}: checkout: moving from 7e1ae4e7907f446d7d238741933509d4d64e0715
7e1ae4e HEAD@{6}: checkout: moving from 60299f452350c05d22e6bd703f1a7658112c171f
60299f4 HEAD@{7}: checkout: moving from 8e58a900f13132e0dcaa39ae980f7868184cbf65
8e58a90 HEAD@{8}: checkout: moving from 49f004a3d08ee52ee24334c07fc9d35c40480dbb
49f004a HEAD@{9}: checkout: moving from 4374fecebf215eb868beb881af8909922d45e764
4374fec HEAD@{10}: checkout: moving from 13a4a7e00c15986e07c48969f026afb2fe02f60
13a4a7e HEAD@{11}: checkout: moving from master to 13a4a7e00c15986e07c48969f026a
4d6a183 HEAD@{12}: reset: moving to HEAD@{20}
6eb9a8e HEAD@{13}: reset: moving to HEAD@{1}
0964917 HEAD@{14}: reset: moving to HEAD~1
6eb9a8e HEAD@{15}: reset: moving to HEAD~1
e6474e3 HEAD@{16}: reset: moving to HEAD~1
821fe87 HEAD@{17}: reset: moving to HEAD~1
04bd607 HEAD@{18}: reset: moving to HEAD~1
4173f0d HEAD@{19}: reset: moving to HEAD~1
6f15ad8 HEAD@{20}: reset: moving to HEAD~1
a847ccd HEAD@{21}: reset: moving to HEAD~1
498d2e7 HEAD@{22}: reset: moving to HEAD~1
fe2772d HEAD@{23}: reset: moving to HEAD~1
最佳答案
是的,你可以这样做,打开 git 控制台并放置
git reflog
在那之后你会得到你的提交列表
git reset --hard "hash of commit which you need"
关于git - 执行 git reset --hard head 后如何恢复我的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656783/
我是 git 的新手,所以问题可能很简单,git reset --hard HEAD 和 git reset --hard 有什么区别? 最佳答案 HEAD 在您未指定该参数时是隐含的。 但是,您可以
为了恢复工作树和索引中的更改,此答案 ( https://stackoverflow.com/a/5812972/8278160) 建议运行以下命令: git reset --hard 运行它是否与运
这个问题在这里已经有了答案: What's the difference between HEAD^ and HEAD~ in Git? (17 个答案) 关闭 6 年前。 git reset --
我在 Stackoverflow/elsewhere 上尝试了很多链接来正确理解 的行为 git reset --hard option 我知道: 如果它被省略或者它是 origin,则在 origi
只是一个简短的问题。我想知道是否有一个选项或开关可以启用重新加载按钮下的“硬重新加载”和“清空缓存和硬重新加载”选项而无需打开devtools,以便它们始终弹出,即使devtools没有开放。 我知道
我最近在 Chrome 中发现了这个新功能: 我可以找出选项 1 和选项 3 之间的区别,选项 2 可能介于两者之间,但我在任何地方都找不到更精确的信息。 有人知道这 3 个选项的确切行为吗? 最佳答
我正在寻找一种很好的简单方法来查找哪些扇区占用给定文件。我的语言偏好是 C#。 从我的 A-Level Computing 类(class)中,我了解到硬盘驱动器在磁盘的前几 KB 上有一个查找表。在
我相信这是一个被分配的值并且这是无法改变的。一个例子是: int limit =5; for(int i =0 ; i
有些程序可以从硬盘恢复已删除的文件,也有一些程序会覆盖可用空间以防止已删除的文件被恢复。 覆盖可用空间的行为似乎是可以理解的。该程序创建文件并向其中写入任意字节。 但是,当谈到读取已删除的文件时,我感
Python 中有几种用于分割的包和方法。但是,如果我先验地知道某些像素(而不是其他像素)对应于特定对象,我如何使用它来分割其他对象? 哪些在 python 中实现的方法适用于这种方法? 谢谢。 最佳
我试图找到一个文件,然后在不同的目录中创建一个具有相同名称的硬链接(hard link)。但这不起作用,如果我使用 -exec 并在关闭后显示一个结果。我已经让它与 cp 一起工作,但我决定改用硬链接
我想知道是否可以在 Linux 上识别文件(或链接)是否是硬链接(hard link)。例如,如果我创建了: dd if=/dev/urandom bs=1024 count=10000 of=fil
在上次提交后,我的团队认为远程变得太繁重了,最好做一个新的来在 Assets 测试(重 repo )和功能测试(轻 repo )之间拆分任务。所以我做了一个 push --mirror 并创建了一个新
我不确定我是否遇到了默认超时(我可以在某处设置它吗?),但也许我错过了一些东西。当客户端的浏览器建立 websocket 连接时,我保持持久性。然后,在断开连接时,我删除该持久对象。足够简单。当客户端
我正在编写一个备份脚本,它使用硬链接(hard link)来不占用未修改文件的空间。 我想检查给定的文件系统(根据特定目录确定)是否在脚本的开始 支持硬链接(hard link) - 否则,它可能会中
我需要在运行时为路径长度超过 255 个字符的文件创建硬链接(hard link)(这是针对令人恼火的 Excel/Word 2011 限制的解决方法)。但由于稍后可能会再次打开同一个文件,如果我已经
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的作业要求我访问 test.txt 文档,因此文件名必须硬编码到我的 C 驱动器。我不知道硬编码是什么意思。有人可以帮我解决这个问题吗? 最佳答案 “硬编码”意味着将某些内容放入源代码中。如果您不进
我刚开始玩 Git,想知道一个具体案例: 我错误地做了一个沉重的提交,更糟糕的是我将它推送到远程服务器。 现在我正在尝试使用 git reset --hard v1.0 和 git push -f o
对于 Unix cp,您可以使用 --link 选项。当与文件夹一起使用时,它将 hard link涉及的文件而不是复制,示例 cp --recursive --link foo bar 这在某些情况
我是一名优秀的程序员,十分优秀!