git,我爱你👩, submodule 全是 bug,这回丢大了。

2024-01-16 16:53:29 +08:00
 andyJado

背景:原始库作为 submodule 在父 repo 下面。

行为:本地 commit 了没有 push ,父 repo cehck 一下别的 branch ,check 回来。

结果:submodule 所在文件空了,丢失了 commit 但没 push 的历史。

5362 次点击
所在节点    git
28 条回复
Aurora0
2024-01-16 17:02:18 +08:00
JetBrains 家的软件有本地历史记录可以找回的
KevinLock
2024-01-16 17:02:23 +08:00
git reflog 找一下看能恢复吗?
试着用 subtree 吧,submodule 坑太多了
wgbx
2024-01-16 17:03:36 +08:00
git 只要 commit 就能找回来,有操作历史命令的,试试 git reflog
wgbx
2024-01-16 17:04:40 +08:00
找到哈希 commit ,cherry-pick 啥的都可以弄回来
konakona
2024-01-16 17:27:36 +08:00
因为你本地 submodule 是游离分支吧,所以会丢失,但凡在你丢失之前执行一次 git log 看下 commit id ,这样一来在你发生“丢失”的时候,可以用 git cherry-pick 旧回来。

还是学而不精啊…
qqjt
2024-01-16 17:29:26 +08:00
本地 commit 的时候,不先 commit submodule 的吗
kneep
2024-01-16 17:38:39 +08:00
git reflog
woodfizky
2024-01-16 18:03:41 +08:00
本地 commit 过用 git 可以找回来。

本地没 commit 过但是用的 jetbrains 的 IDE 可以用 local history 找回来。这个也是我本地忘了 commit 拉代码导致丢代码才发现的,本来都万念俱灰了。
xfn
2024-01-16 20:29:15 +08:00
可以看看 google 的 repo ,android 和 chromium 的源代码都是它管理的,每个项目都是由上百个的 git 仓库组成。我们自己的工程管理中也用得很顺
MajestySolor
2024-01-16 21:00:15 +08:00
git 的 submodule 是巨坑,碰过一次就再也不想用了
SingeeKing
2024-01-16 21:13:24 +08:00
应该有 reflog ,checkout 会一并改 submodule 指向的 commit ,但是 commit 过不太容易丢
Inf1nity
2024-01-16 22:29:44 +08:00
git submodule 确实是有挺多坑的,部分操作行为和结果非常反直觉。
kennir
2024-01-16 22:31:34 +08:00
submodule 问题太多了,我们用 git-repo 管理多仓库,配合 codeup 还不错
tolbkni
2024-01-16 22:35:25 +08:00
直接在 submodule 里改东西?我一般是会把 submodule 里的 repo 单独放个文件夹,所有改动在单独的 repo 里做,然后 push 到服务器上,submodule 只从服务器上拉取
Maboroshii
2024-01-17 00:30:49 +08:00
submodule 概念的确难理解,我觉得不如 gitignore 加同步脚本来维护。。
jinqzzz
2024-01-17 07:51:01 +08:00
repo 确实是个不错的替代/解决方案
andyJado
2024-01-17 08:18:10 +08:00
@konakona
@qqjt
@KevinLock
@wgbx
父 repo 的 reflog 只记录一个 hash ,撒毛利的.git 都没了我 gi 啥有用?
icegogh
2024-01-17 08:20:56 +08:00
git sub 相关的 api 水有点深,建议一般不到精通 git 的程度 不要触及
retanoj
2024-01-17 09:28:22 +08:00
我想复现一下 OP 的操作,但有点没看明白。

本地修改了 submodule 并 add && commit 了,在父 repo 的 status 里会显示一个修改。这时候父进行 checkout branch 这个修改会带过去的吧?为啥会丢呢?
lvjiaxuan818
2024-01-17 09:32:32 +08:00
submodule 已经不用了,workspace 你值得拥有。

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

https://tanronggui.xyz/t/1009115

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

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

© 2021 V2EX