我在本地工作树中使用git checkout意外地丢弃了文件的更改。这些文件此时没有被暂存。有可能“撤销”此操作吗?
我在本地工作树中使用git checkout意外地丢弃了文件的更改。这些文件此时没有被暂存。有可能“撤销”此操作吗?
伙计,
假设你和我一样非常幸运,回到你的编辑器并执行撤销操作(Mac上是command + Z),你应该能在文件中看到丢失的内容。希望这对你有所帮助。当然,这只适用于已经存在的文件。
我刚刚遇到了这个问题,我查看了一个包含数小时工作的整个文件夹!幸运的是,我发现我的IDE Netbeans保留了每个文件的历史记录,这使我能够恢复99%的东西,尽管我需要手动修复一些东西。
最初的回答:
如果您正在使用Intellij IDE,则可以撤消此操作。
diff
,add -p
,checkout -p
等),并且自那以后没有关闭终端/cmd提示符,则如果您向上滚动到运行这些前述git命令的位置,您会发现未暂存的更改仍然可用。git apply --reject --whitespace=fix <包含diff输出的文件名>
。 - 12431234123412341234123我通常把所有的工作都放在一个Dropbox文件夹中。这样可以确保我在本地机器和Github之外也能使用当前文件夹。我认为这是除了git之外保证“版本控制”的另一种方式。您可以按照此步骤将您的文件还原为Dropbox文件的先前版本
希望这有所帮助。
也许你的更改并没有丢失。检查 "git reflog"
我引用下面的文章:
"基本上,你在 Git 中执行的每个存储数据的操作,都可以在 reflog 中找到它。 Git 非常努力地不丢失你的数据,因此,如果出现某些原因导致你认为数据丢失了,很有可能你可以使用 git reflog 找回它们"
详见:
http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html
git reflog
,因为当我在搜索如何撤销 git checkout HEAD .
时,我发现了这个答案。我本来想输入 git reset HEAD .
的,但是我刚刚执行了 git reset --soft HEAD~1
,并不知道 git reflog
,所以我能够找回我所做的工作 :) - Russell England