【问题标题】:How to recover replaced files in local Git repository after pull request?拉取请求后如何恢复本地 Git 存储库中的替换文件?
【发布时间】:2016-12-04 22:03:55
【问题描述】:

最初在我的 Github 上有一些过时的 styles.css 和 JavaScript 文件等。

我昨晚正在处理我的项目,但没有将它推送到 Github 或备份它。它只是使用一系列本地未推送的提交保存在我的本地存储库中。

作为一个新手,我做了一个git pull request master,我本地存储库中的所有文件都被替换为原始的styles.css 和我 github 中的 JavaScript。

有没有办法取回这些文件?

我做了一个 git reset head@{2},我相信在拉取请求之前存储库的状态是,它显示了一些未暂存的文件。

在 Gitshell 中,我的命令行有“master [+10 ~19 -42 !]”,文本 master 是黄色的。

此时,我该怎么办?目前我似乎失去了很多工作。

【问题讨论】:

  • 您是否在本地仓库中进行过任何提交?

标签: github git-shell


【解决方案1】:

如果您经常执行提交,您几乎可以访问其中任何一个。

首先使用git reflog (https://git-scm.com/docs/git-reflog)。它将向您显示您所做的所有临时提交。一旦你找到相关的,你可以git reset #commit_id

【讨论】:

  • 我做了一个 git add 然后在拉取请求之前在 gh-pages 中提交,而不是 master(在我之前关闭 git shell 之前忘记做 git checkout master),并做一个 git reflow show ,它显示了提交。但是当我去 Github.com 并导航到 gh-pages 时,它没有显示并且 gh-pages 中的文件仍然是旧版本。
  • 重置后我输入什么?目前 git shell 中的主文本是黄色的。我不想一个人走得更远
  • 如果您可以看到本地计算机上反映的更改(它是最新的),您可以通过执行 git push --force 将更改推送到 github。否则,请澄清预期的最终结果是什么。
  • 我现在按照您的建议修复了它。执行“git reflog show”以查看我上次提交的位置。然后在 gitshell 中使用 git reset HEAD{2}。然后我输入“git status”来显示哪些文件被修改和删除。这是我被卡住的部分,不知道如何将“git status”列表中的文件返回到我的本地存储库。谷歌搜索并找到了解决方案。它是“git checkout——”。将“git status”列表中的所有文件恢复到本地存储库。 github上的所有文件都保持不变,只有我拉到本地的文件被恢复了。
猜你喜欢
  • 2013-10-30
  • 1970-01-01
  • 2018-11-10
  • 2019-09-09
  • 2021-08-18
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多