在这种情况下,是否有一种方法可以返回提交?



我今天创建了一个git裸仓库,并添加了一些点文件和配置。最重要的是我的qtile配置,因为我在它上面花了很多心血。

添加完所有东西后,我按了一下,一切都好了。

我这样做是因为我计划发行版hop,然后我清理了我的磁盘(所有其他重要文件都保存在云上)。

安装了新的发行版(在我使用Manjaro之前,是ouros)并创建了一个新的git bare repo。

这就是事情出错的地方。它不允许我在添加远程repo后拉文件,所以我想,让我在这台电脑上添加和推送我所有的东西(这并不多,因为它是一个新安装),即使它覆盖了一些东西,我也会检查git并复制差异。

嗯,我强行推入了我添加的东西,因为我之前没有做过拉入,这个提交覆盖了我之前做过的,我添加了所有对我重要的配置的提交。

我去了github的repo,所有的文件都丢失了,只有一个提交显示(我强制推送的那个)。

我知道我做错了几件事让自己陷入这种境地,但我想知道是否有办法恢复那些我以前在我的repo中被覆盖的文件。

GitHub有一个事件API。

查找此类事件的有效负载中的PushEvents和"before"字段。

一旦你得到了提交散列,你应该可以运行git fetch origin <sha>,然后是git checkout <sha>:README.md

注意:git fetch origin <sha>中的<sha>应该是完整的40个字符的sha1,而不是一个短的sha——github会将任何不是40个字符长的十六进制字符串作为引用名。

相关内容

最新更新