我设法犯了一个大错(在星期一早上)在Master上工作,忘记创建新的分支,对文件进行更改然后无意中恢复到master,丢失所有更新.我没有提交更新的文件.
我丢失了所有更新还是可以检索它们?
不要问我怎么样,因为每当我想到它,我都必须在脸上打自己.
Sai*_*esh 71
如果您没有提交,暂存或隐藏所做的更改,则无法恢复这些更改.
编辑:恢复丢失的更改.在Mark Longair的建议中添加此内容(在评论中).这还包括他在下面的答案(*)中的几个SO链接,我发现它非常有用.
如果您曾经提交过一些更改并且丢失了该提交(比如提交处于分离状态),您可以使用找到该提交reflog
.看到这个问题*.
如果您丢失了上次暂存的更改,则还可以恢复该更改.看到这个问题*.(我自己从未使用或尝试过).
如果您隐藏了更改,您还可以使用pop
或恢复apply
.(我不确定弹出/丢弃的藏匿处是否也可以恢复,但未提交).你可能会发现这个在git中使用的Recover drop stash非常有用.
如果有任何人可以建议的其他方法,我会进一步编辑此答案以添加它们.
Chr*_*ton 37
两个远景:一些IDE,如Delphi,保留了编辑器的历史.你可能在那里有一些追索权.
接下来,如果您的本地工作目录位于MyDocuments文件夹中,它可能已由Windows Home Server,Carbonite,MozyPro等自动备份.这些通常是"设置并忘记它".也许你忘了它?
小智 15
我陷入了同样的境地.
在--hard reset之前有一个已更改文件的列表,进入我的编辑器(Sublime 2,尽管无关紧要),打开每个文件并点击cmd + z(撤消)一次,这有效地解除了变化由硬重置完成,我得到了我未提交的更改:)
这里的关键问题是您在对文件进行更改后所执行的操作.如果您创建了一个包含文件新状态的提交,那么您应该能够通过查看最近的条目来找回它们git reflog
,找到提交的SHA1sum,然后从中创建一个新的分支git branch recovered <SHA1sum>
,或者类似的.在这个答案中有一个这样做的例子.
如果您git add
对任何文件进行了演示,那么您也应该能够将它们取回,但这是更多的工作 - Jakub在这个答案中描述了如何做到这一点.
如果你碰巧做了一个git stash
给自己一个干净的状态,那么当然你可以像任何其他藏品那样取回它.
否则,我担心新闻不好.
我希望事后指出这一点并不令人愤怒,但只要切换回master
分支,你就不应该使用任何可能丢失数据的命令 - git checkout master
会告诉你你已经在主分支上了,并显示任何未提交的更改.(git reset --hard
如果有未提交的更改,可以说应该有一个"是的,我真的是这个"确认,考虑到^W
我以这种方式丢失数据的频率.)
归档时间: |
|
查看次数: |
70080 次 |
最近记录: |