今天我(从IDE)提出了一个PR:在我推送的提交中,有3个文件被触摸。
现在我做了什么:我删除了GitHub中的一个文件,并创建了一个新的提交(更改的文件现在是2)。
你能帮我恢复/撤消对文件的删除吗?
(我是Git版本控制系统和GitHub.com的新手)
这就是我所理解的你所做的:
(即使你可能只通过GitHub.com GUI完成)
git add file1 file2 file3
git commit -m 'add files'
rm file1
git add file1
git commit -m 'removed unnecessary file'
git push origin master
现在您要恢复file1
,对吗?
如果是,您可以通过:进行准备
git stash -u
临时删除所有未提交的更改git checkout master
以确保您位于要将文件恢复到的同一分支中(也可以使用git log
和git show HEAD
查看您的最后提交)
然后…
…要实际恢复file1
,您可以:
git revert HEAD
并确认;这将创建一个新的提交,恢复上次提交(HEAD
)带来的所有更改。这实际上类似于undo操作,将在Git历史记录中可见(再次参见git log
)
或
- 您可以从历史中的提交中仅签出(还原)特定的
file1
,(HEAD
是当前/最后一次提交,而HEAD^
是一次提交,HEAD^^^
是3次提交;您可以使用git show HEAD^
查看其更改)git checkout HEAD^ -- file1
以恢复文件(请参阅通过git diff
创建的更改)- CCD_ 17&
git commit -m 'restore the file that was wrongly removed'
,以便重新添加文件并重新提交 git push origin master --force-with-lease
到覆盖上一次提交- 小心:这是很难发现的尤其是当你对Git没有太多信心的时候。强制
git push
有可能永远抹去你在项目中所做的所有工作。因此,请避免此选项,并在将来再次检查。你也可以给我这个老问题一张支票
- 小心:这是很难发现的尤其是当你对Git没有太多信心的时候。强制
此外
我的印象是,您不清楚Git(一种通过控制台管理的协议和版本控制系统)和GitHub.com之间的区别(用于存储、管理和显示Git存储库的Microsoft在线门户)。
GitHub.com提供的接口非常有限,因此不能仅通过GitHub.com用户界面执行revert
的操作。
不幸的是,您将不得不学习如何通过CLI(命令行界面)管理Git。这在一开始是痛苦的,但它是值得的努力(如果你是一个开发人员)
当您试图理解Git、它的命令和逻辑时,使用一个Git GUI客户端(请参阅此列表)可能会有很大帮助。
PS-不要忘记将此标记为最佳答案✅,如果这能澄清你的疑虑。