Xcode 的 git,没保存不小心 checkout 后还能救吗?

2021-04-07 23:44:02 +08:00
 icebarley

各位大佬好,我是一个 git 小白,平时写 APP 没太注重 git 这块知识,今天想给 APP 写个新功能,想添加一个分支。

然后进入了 Xcode 的 git 界面,发现 master 这个分支的版本是三个月前,最近 commit 的都跑到总项目文件这里了(图片的蓝色文件夹处),然后想着 checkout 应该就是合并一下,可以把最近的 commit 合并到 master 里,之后就悲剧了,整个项目回到了三个月前的样子。

我写 APP 比较佛系,晚上偶尔写写新功能,平时没有 add 、commit 的习惯,几乎都是版本快发布前才做这些操作。现在就是 dropbox 保存了 3 天前的文件,最坏的结果就是重新写这 3 天的代码。不过我看了一下项目下面 .git 这个文件夹,里面貌似还有 objects 、index 这些文件,不知道能不能根据这些恢复我 checkout 前的代码呢?

有看到说 PyCharm 、jetbrains 这些软件能恢复历史记录,那如果我把 .git 导入这两个软件是不是也能恢复呢?求大佬赐教!

5870 次点击
所在节点    git
49 条回复
NEVERCODE
2021-04-08 13:37:00 +08:00
@Vitta 很惨,但是有点好笑
Rocketer
2021-04-08 13:38:38 +08:00
按 git 的最佳实践,应该每完成一个改动就 commit 一下,学名叫原子性( atomic )。

习惯这么做以后,就不会发生这种惨剧了。
xz410236056
2021-04-08 14:36:56 +08:00
sourcetree 不香吗?这么多年了就没用过 xcode 的 git
mcluyu
2021-04-08 14:43:47 +08:00
没 commit 就 checkout 会提示你先 stash, 往下 看,下面有个 Stashed Changes,checkout 回你想 apply stash 的分支,然后 apply stash, 然后 commit, 再 merrge “branchXX” into “branchXX1”

没有 stashed changes 那就不知道了。
uselessVisitor
2021-04-08 15:24:00 +08:00
无了
Felldeadbird
2021-04-08 16:29:29 +08:00
大概率没了。
看看 xcode 有没有提供 local history (本地文件历史)。 有一些 IDE,就算你文件被 checkout,你复建一样的文件。然后在本地文件历史,还是可以回滚到代码(前提 IDE 一直没关闭,且不一定回滚到)。

下次 checkout 前,检查清楚在执行吧。我一般不用 IDE 的 GIT 。要么第三方 GUI,要么命令行。
kiripeng
2021-04-08 16:30:42 +08:00
xcode 没有 local history 把
icebarley
2021-04-08 21:56:52 +08:00
@ZHanYao @mcluyu
谢谢两位大佬提供的思路,虽然 Xcode 看不到之前的 Stashed Changes 的内容,但是 Xcode 里 checkout 前会 stash 这个思路给了很大的帮助。

我最后通过 @zsen 大佬提供的链接恢复了!感恩
djs
2021-04-08 23:39:16 +08:00
自动 stash 保命了一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX