今天脑抽,webstorm 打开的时候清了下启动项目那里的缓存,发现代码变成了很久之前的一个版本,git history 是很久之前的了。 能恢复吗?编辑器本身的缓存打开,而不是 git 的某一个版本打开,咋操作?
|  |      1Zhuzhuchenyan      2021-08-01 20:58:26 +08:00  1 看一下 webstorm 的 local history,或许还能救 没有 stash 的话基本没办法了 | 
|  |      2raysonx      2021-08-01 21:22:18 +08:00 via iPhone git reflog 找找之前的 commit 记录 | 
|  |      3raysonx      2021-08-01 21:22:42 +08:00 via iPhone 如果没有 commit 那就没了 | 
|      4hullopanda      2021-08-01 21:26:03 +08:00 这每天不 commit 是啥好习惯啊  尝试恢复 webstorm 的数据,从 windows 磁盘层面去恢复。 | 
|  |      5tonytonychopper      2021-08-01 21:39:53 +08:00 via iPhone 每天 commit 才是好习惯 | 
|  |      6liuzhaowei55      2021-08-01 21:44:19 +08:00 via Android 应该随手 commit 就像随手 Ctrl + S 一样 | 
|      7yitingbai      2021-08-01 21:49:02 +08:00 一楼说的对, webstorm 自身有文件历史记录, 可以保留一段时间, 可以找回来 | 
|  |      8KMpAn8Obw1QhPoEP      2021-08-01 21:56:18 +08:00 via Android @liuzhaowei55 如果写了一半没写完的呢 也要 commit 吗?有点强迫症 每次都想把一个完整的写完 一切都干干净净了再 commit 觉得写了一半像草稿的 commit 之后有记录 心里总有疙瘩。。 | 
|      9yitingbai      2021-08-01 21:58:10 +08:00 @enchilada2020 提交记录写清楚不就行了, 什么临时保存, **功能尚未完成, 这种强迫症要不得 | 
|      10Rache1      2021-08-01 22:03:08 +08:00 Local History 也不是万能的 😂 [Local History]( https://www.jetbrains.com/help/webstorm/local-history.html) > Note that Local History is not a replacement for a proper version control for long-term versioning. Local History is cleared when you install a new version of WebStorm. It also has a [retention period]( https://www.jetbrains.com/help/webstorm/local-history.html#local-history-retention) and maximum size, so revisions are not guaranteed to persist. | 
|      11512357301      2021-08-01 22:04:58 +08:00 via Android @enchilada2020 commit 的目的就是记录你的思路,开源嘛,让别人也能知道你的代码变动过程。 一次性完整写完再 commit 大可不必,一次性完整写完我觉得那应该叫发版或者大版本,这里面肯定应该有无数个小版本来支撑的 | 
|  |      12raysonx      2021-08-01 22:09:17 +08:00 via iPad  1 @enchilada2020 完整写完后可以把之前的 squash 成一个 commit 再提交 | 
|  |      13ClericPy      2021-08-01 22:22:57 +08:00 wip commit 了解一下... | 
|  |      14ClericPy      2021-08-01 22:23:22 +08:00 看错了... 已经覆盖了的话只能指望 IDE 自带的撤回了, 我撤回过... | 
|  |      15pengtdyd      2021-08-01 22:39:20 +08:00 项目在本地写了很久,没有 commit 过。就这句话我觉的你还真是个人才 | 
|      16WenhaoWu      2021-08-01 23:02:46 +08:00 via Android commit --amend 了解一下 | 
|      17mercury233      2021-08-01 23:03:45 +08:00 我也不喜欢每天 commit 但我会 add | 
|      18forgottencoast      2021-08-01 23:15:20 +08:00  2 @enchilada2020  搞一个开发分支,弄好了,合并成一个 commit 也可以解决有强迫症的问题。 正常是每次完成一个小改动就 commit 。 中途的临时保存可以用 stash,这个不是 commit 。 | 
|  |      19CEBBCAT      2021-08-02 00:00:25 +08:00 听起来有点不合理,是不是打开错项目了?不然的话我怀疑是你没有描述清楚,Intellij 这些都是有自动保存的,比如窗口失焦,更别说关闭程序了。 清理缓存不可能把代码都清理掉的 | 
|  |      20theSong OP @Zhuzhuchenyan 找着了,还好 stash 了 | 
|  |      21theSong OP @tonytonychopper 你说的对,以后再也不敢了 | 
|      25techphoebe      2021-08-02 00:13:59 +08:00 via iPhone  1 @enchilada2020 每天提交,最后 rebase 一下把中间的提交干掉 | 
|  |      26tonytonychopper      2021-08-02 00:23:14 +08:00 via iPhone @enchilada2020 这其实就涉及到功能的拆解问题了 | 
|  |      27limbo0      2021-08-02 00:55:41 +08:00 最后的机会是开 timemachine, 惨痛的经理 | 
|  |      28msg7086      2021-08-02 04:42:59 +08:00 via Android 功能完成的时候重新整理提交不是常规操作么。 | 
|  |      29simo      2021-08-02 07:45:59 +08:00 有 reflog 就 git 恢复,没有只能尝试文件恢复了 | 
|  |      30simo      2021-08-02 07:46:58 +08:00 看到找回了。。。 | 
|  |      31liuzhaowei55      2021-08-02 09:10:20 +08:00  1 @enchilada2020 如果你自己的 feature 分支,并且不会有各种 lint 那就 commit,并且 push,电脑说不定什么情况就阵亡了。 | 
|  |      32rationa1cuzz      2021-08-02 09:24:15 +08:00 没有 add reflog 找不到基本上没戏,长长记性吧 | 
|      33swaggeek      2021-08-02 09:28:17 +08:00 @enchilada2020 没写完提交,可以下一次提交的时候用 commit amend 的啊。 | 
|      34landfill      2021-08-02 09:48:40 +08:00 via Android 没写完也 commit 写完了 rebase squash 就可以合并 | 
|  |      35Macv1994      2021-08-02 09:57:17 +08:00 JB 家的 IDE 好像都有 local history 应该可以恢复 我上周也是手贱执行了 git restore app/* 结果第二天打开修改全没了 从 local history 恢复了 | 
|  |      36RRRoger      2021-08-02 10:25:31 +08:00 local history 是个好东西 | 
|      37acmore      2021-08-02 10:48:50 +08:00 @enchilada2020 Commit 本就不是用于搞一个完整的事的,就是 Feature 层面的 Ctrl + S 而已。真正表述一件完整事情的是 Pull-Request / Squashed Commit | 
|      38nightwitch      2021-08-02 11:28:37 +08:00 理解错了 commit 的含义。。commit 并不代表某个功能完成,可以理解成 git 层面的保存文件,完成功能的话应该打 release 包和 tag 了。 commit 记录可以 squash 的,平时在 dev 分支开发,开发完了以后把所有的更改 squash 一下提交到 master 分支,这样 master 分支始终是干净的,Dev 分支又保留了很多历史记录。 | 
|  |      39no1xsyzy      2021-08-02 12:21:09 +08:00 squash 和 WIP commit 都有一个问题:如果后来发现一个 bug 需要 bisect 的话, 1. squash 只能发现在这一个大提交之中。 2. WIP 你需要在一堆提交中找到恰当的可用提交。 这都是不可接受的,所以应当采用细致的功能划分,每次只动一个部分。 顺便还有一个命令是 git fsck --lost-found 可能可以找到未提交被 reset 掉的内容。 | 
|  |      40xuanbg      2021-08-02 13:11:21 +08:00 每修一个 bug 或者新加一个功能都要 commit 一次才是好习惯 | 
|  |      41ThanksSirAlex      2021-08-02 14:06:32 +08:00  1 @enchilada2020 git stash,或者 commit 掉之后再 git reset | 
|  |      42CharAct3      2021-08-02 14:47:09 +08:00 function gfix(){ git reset --soft HEAD~${1-1} && git commit --amend -C HEAD; } 加一个这个命令,随时 commit,要 push 前直接 gfix <number> 就可以快速 squash commit 了 | 
|  |      43libook      2021-08-02 16:32:40 +08:00 一个 branch 尽可能包含一个细粒度的 feature 或 fix,可以随时 commit 和 push,合并的时候可以用 rebase 把 branch 的所有 commit 合并为一个 commit 来合并到其他分支上。 | 
|  |      44root8080      2021-08-02 16:40:37 +08:00 看到这个帖子  吓得我赶紧先 commit 下😅   三天没提交了 | 
|      45HangoX      2021-08-02 18:12:43 +08:00 试试 vscode 打开试试,jetbrains 有个 bug,会显示缓存,显示和看到不一样 | 
|  |      46nacosboy      2021-08-03 08:11:34 +08:00 via iPhone 随时 commit,最后 push 可以 rebase -i 精简 commit |