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 导入这两个软件是不是也能恢复呢?求大佬赐教!

5820 次点击
所在节点    git
49 条回复
chinvo
2021-04-07 23:45:51 +08:00
你 checkout 的时候丢弃修改了? 还是 stash 了? 还是先 commit 再 checkout 了?
icebarley
2021-04-07 23:50:11 +08:00
@chinvo 我点太快了,没看清楚,checkout 前没有 commit 的,所以才悲剧了
msg7086
2021-04-07 23:55:24 +08:00
没提交的代码部分不归 git 处理,不会保存到.git 数据库中。

用 git 可以保证数据不丢失,如果你故意不用 git 来管理版本,那 git 也没法帮你恢复数据。
icebarley
2021-04-08 00:14:47 +08:00
@msg7086 主要是个人小项目平时没那么复杂,让我产生不用 git 也能好好运作的幻觉,今天这种人为失误操作带来的影响也确实会让我重视起来啦
BrettD
2021-04-08 00:36:21 +08:00
如果你不 commit 的话是找不回来的
BrettD
2021-04-08 00:36:45 +08:00
git 只保存你的 commit 历史
tr1stan
2021-04-08 00:50:59 +08:00
这个城市又多了一个伤心的人
momocraft
2021-04-08 00:56:25 +08:00
如果 git add 过 有可能能恢复出来 (到.git 里面找文件日期较新的 tree / blob object)
先备个份 别抱太大希望
ch2
2021-04-08 00:56:45 +08:00
只有 commit 的才能还原
zsen
2021-04-08 01:01:53 +08:00
https://www.google.com
/search?q=git+%E6%89%BE%E5%9B%9E%E6%9C%AA%E6%8F%90%E4%BA%A4%E7%9A%84%E6%96%87%E4%BB%B6&newwindow=1&safe=strict&source=hp&ei=0eRtYKinKIbr0ATPzbGQDQ&oq=git+%E6%89%BE%E5%9B%9E%E6%9C%AA%E6%8F%90%E4%BA%A4%E7%9A%84&gs_lcp=ChFtb2JpbGUtZ3dzLXdpei1ocBABGAEyBQghEKABMgUIIRCgATIFCCEQoAE6AggAOgQIABAMOgcIIRAKEKABUPsLWLekAWCcxgFoBnAAeAaAAZIBiAGKGJIBBDkuMjCYAQCgAQGwAQA&sclient=mobile-gws-wiz-hp
Vancion
2021-04-08 02:24:31 +08:00
补充一点,不要用 dropbox 保存 git 仓库,文件可能会损坏。好像前两天才在这看到案例。
NilChan
2021-04-08 05:52:44 +08:00
没 commit 就 checkout 不会失败吗?
HeapOverflow
2021-04-08 06:13:36 +08:00
you done fucked up.
xiadong1994
2021-04-08 07:13:18 +08:00
你 checkout 有冲突的的话是会失败的啊,没冲突你的修改应该还在但是是基于三个月前的 master 的。而且你的描述我也没看懂,什么叫“最近 commit 的都跑到总项目文件这里了”,commit 是怎么跑到文件里的?
vicnicLight007
2021-04-08 07:27:18 +08:00
还是要用 sourceTree 稳当
LokiSharp
2021-04-08 08:10:22 +08:00
有事没事就要 commit 一下啊…
iminto
2021-04-08 08:27:56 +08:00
jetbrains 才是你的正确选择。IDE 自带历史记录和本地版本记录,即使你没有 commit,也不会丢数据
nieyujiang
2021-04-08 08:33:57 +08:00
@iminto #17 然而,jb 家的 appcode 非常难用,xcode 比他好用无数倍🤣🤣🤣
nielinjie
2021-04-08 08:40:20 +08:00
既然 Mac, 不是有 Time Machine 么?
Mutoo
2021-04-08 08:41:38 +08:00
jetbrains 家的 IDE 自带 local history 是独立于版本控制存在的。救了我好几次命。

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

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

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

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

© 2021 V2EX