可以用git来取消未分离的文件的签出

我偶然地放弃了我的本地工作树中的文件通过git结帐的变化。 这些文件目前没有上演。 可以“撤销”这个结帐吗?

我相信,如果一个文件被修改,但还没有添加(阶段),它是纯粹的“私人”。
这意味着如果用索引或HEAD版本覆盖,GIT就不能恢复它(除非你有一份当前工作的副本)。

“私人”内容只能在当前目录中看到,但在Git中没有以任何方式注册。

如果您使用的是“专业”IDE,则可以从本地历史logging恢复文件。 例如在Rubymine中,您可以右键单击文件并从独立于git的变化中查看更改的历史,现在保存了几次^^

不幸的是你的改变丢失了。 您的私人修改只是被覆盖。 除非你在做结帐之前把git stash

从更明亮的一面来看:现在可以把事情做得更好;)

如果你在一个像Sublime Text这样的编辑器中工作,并且有问题的文件仍然打开,你可以按ctrl + z,它将返回到git checkout之前的状态。

检查您的IDE中的本地历史logging。

OS X开发? 使用Xcode? 你可能很幸运!

正如qungu的评论中所描述的那样, 即使您没有使用时间机器 ,OS X 也会保留文件的自动保存版本历史logging。

所以,如果你用一个不小心的git checkout .吹走了未分配的本地变更git checkout . ,这里是如何可能恢复所有的工作。

如果有人发现这个线程已经破坏了XCode的一些工作,有一种方法来获取自动保存历史logging。 XCode本身没有菜单条目来查看自动保存历史logging,但它确实存储它。 如果在TextEdit中打开有问题的文件,则可以在File> Revert下恢复并查看AutoSave历史logging。

这真是太棒了,昨天为我恢复了一天的工作。


您可能会问: “为什么2016年用于软件工程的首要VCS没有git命令行界面,至less在把它们扔掉之前备份文件呢?就像你知道的那样,三十年“。

或者你也许会问: “为什么在TextEdit中可以访问这个非常棒的文件历史loggingfunction,但是实际上我不需要Xcode吗?

我想这两个都会告诉你很多关于我们这个行业的信息。 或者,也许你会去修复这些工具。 这将是真棒。

如果您之前曾经隐瞒过更改(例如重新绑定之前),这可能会有所帮助

如何在Git中恢复被丢弃的存储?

即使你已经“藏起来”了。

我通常把所有的工作放在一个保pipe箱文件夹中。 这确保了我可以在当地的机器和Github之外使用当前的文件夹。 我认为这是我保证git以外的“版本控制”的另一个步骤。 您可以按照此步骤将文件恢复到Dropbox文件的先前版本

希望这可以帮助。

这种情况的有效救星是Time Machine(OS X)或类似的基于时间的备份系统。 它救了我几次,因为我可以回去只恢复一个文件。

也许你的改变不会丢失。 检查“git reflog”

我引用下面的文章:

“基本上你在Git里面执行的每一个数据存储的行为,你都可以在reflog中find它, Git很难不丢失你的数据,所以如果出于某种原因,你认为它有可能挖出来使用git reflog“

查看具体信息:

http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html

技术上是的。 但只在某些情况下。 例如,如果你有代码页,你打git结帐,你意识到你不小心签出了错误的页面或东西。 转到页面并点击撤消。 (对我来说,命令+ z),它会返回到你打到好的旧的git结帐之前。

如果你的页面已经closures,这将不起作用,然后你打git结帐。 它只有在实际的代码页打开时才有效