如何在 git rm 并推送到 github 后取消删除文件?

问题描述 投票:0回答:6

我最近在本地计算机上克隆了一个存储库,然后对其中一个文件进行了 git 删除,并将这些更改推回到 github 存储库。我的问题是如何将该文件恢复到原始 github 存储库?

git github repository undelete
6个回答
34
投票

如果您可以找到包含已删除文件的先前提交

abcd
,那么您可以使用

git checkout abcd 要恢复的文件

恢复它。您需要再次提交文件。


33
投票

假设文件“undelete.sh”被意外删除。

然后获取删除该文件的提交的哈希值:

git rev-list -n 1 HEAD -- undelete.sh

这将为您提供删除的哈希值:

ae85c23372a8a45b788ed857800b3b424b1c15f8

现在您可以查看删除前的文件版本:

git checkout ae85c23372a8a45b788ed857800b3b424b1c15f8^ -- undelete.sh

您应该取回文件。您可以添加、提交并将其推送到存储库。

来源


5
投票

其他解决方案对我不起作用。我就是这样做的。

这就是我获取提交哈希的方式。 (从上面复制

git rev-list -n 1 HEAD -- src/main/java/runner/Main.java

这给了我

6009ff608bc580cf38baf5fa67e232c8bd20c5a7

而且,这就是我恢复它的方法。

git checkout 6009ff608bc580cf38baf5fa67e232c8bd20c5a7~1 src/main/java/runner/Main.java

2
投票

1.如果删除的文件在您的

.gitignore
中,那么您可以在
.gitignore
中删除它,然后再次
git add

2.你可以直接使用

git reset 'commit id contains your deleted file'
然后合并并再次推送。


0
投票

@oxyt 的答案也对我有用。我认为这是因为〜1。 rev-list 返回它被删除的提交,但是您想要包含最后内容的提交,即父级,因此〜1


-1
投票

您应该使用

git reset HEAD~
,然后使用
git checkout -- <filename>
来恢复已删除的文件。

© www.soinside.com 2019 - 2024. All rights reserved.