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