江湖救急! git 合并冲突,第一次遇到这种报错,还是网上搜不到答案的那种

2020-11-09 12:04:04 +08:00
 solider245

如图所示,一直在一个分支上写内容,然后莫名其妙的就跳出很多文件,甚至还跑到其他文件夹去,当时也没注意,就这些多出来的文件都删除了。 现在出现了这种情况,说我的提交好像没有被包含在远程分支中。

error: 对象文件 .git/objects/9e/e311b31fe7519d4e182ed9a805f1b60d6cc031 为空
fatal: 松散对象 9ee311b31fe7519d4e182ed9a805f1b60d6cc031 (保存在 .git/objects/9e/e311b31fe7519d4e182ed9a805f1b60d6cc031 )已损坏

推送的时候报这种错,想知道这该咋整?感觉是冲突合并,涉及到代码回退,我现在本地代码是文件是没问题的,远程仓库好像是因为错误的提交被整乱了。 但是拉取下来或者强行推送都不行。

有什么办法,可以让我把本地仓库强行推送到远程仓库?

目前想好的一个土办法,就是把本地仓库的.git 删除咯,远程仓库也删除了重建,然后本地远程重新建立联系,只是这样的话,就等于以前的版本管理全部丢了。虽然我现在也没有多大用,但是想想,总不能每次都这么土法解决吧?

这张图是我发现错误的时候的提交。感觉整个人都要崩溃了……一直在一条路上走到黑的感觉。

4107 次点击
所在节点    git
18 条回复
darksword21
2020-11-09 12:06:26 +08:00
把这次 commit 的代码手动 copy 出来然后 reset ?
no1xsyzy
2020-11-09 12:09:21 +08:00
先找个其他地方 clone 一下看看内容
gitee/master 的内容是否正常?

git 整个文件夹复制出来随便玩……
no1xsyzy
2020-11-09 12:18:19 +08:00
先确认:
1. 远端的 master 内容是否正常?从 26a12a84 到 master 哪开始不正常的?
如果正常,那重新 fetch 完变基吧
如果不正常,
2. 本地的 gitee/master 是否正常?从 26a12a84 到 gitee/master 哪开始不正常的?
如果正常,checkout master && rebase gitee/master && push --force 吧
如果也不正常,那就看 master 是否正常,就当别人的 PR 你 squash && merge 了吧(
如果 master 也不正常,那你可能回退到 26a12a84-1 来处理了……白做了
SunriseFox
2020-11-09 12:27:14 +08:00
遇到这种情况 8 成是硬盘坏了…
solider245
2020-11-09 12:28:53 +08:00
@no1xsyzy 就是 master 不正常,远程仓库被污染了。然后我手贱拉取下来,还变基了。
不知道我直接把蓝色直接回退,然后和红色合并,这样行不行?
出问题应该就是从红色分手那里开始的。
solider245
2020-11-09 12:29:47 +08:00
@SunriseFox 我用的 wsl,看来真有可能。
因为当时我这个文件夹的文件居然跳到到了桌面上。
这样看的话,难道是硬盘指针出问题了?(我不懂,随便乱猜的)
fiveelementgid
2020-11-09 12:31:23 +08:00
Pro Git 书上好像有写?也许没有
git 分为顶层和底层两套命令
你看看底层的
`git ref-log` 还能不能救?
如果不行,那就 interaction 模式进入 rebase,把损坏节点删掉
`git rebase -i HEAD~<Num>`
no1xsyzy
2020-11-09 12:50:03 +08:00
@solider245 本地没有未 commit 的东西或者 stash 了的情况下可以 checkout gitee/master 看一下……
正常的话,看上去分手之后 master 就一个 commit,直接变基就成。
junwind
2020-11-09 12:54:42 +08:00
保证远程文件都正常,从新克隆一份远程代码就行了,出错的本地直接删掉
likaci
2020-11-09 12:59:49 +08:00
@solider245 #5
"还变基了" 哈哈哈哈
burnbrid
2020-11-09 13:45:51 +08:00
你这个 git 图像界面是哪个软件的?
christin
2020-11-09 13:49:19 +08:00
@burnbrid 同求
reus
2020-11-09 13:54:06 +08:00
error: 对象文件 .git/objects/9e/e311b31fe7519d4e182ed9a805f1b60d6cc031 为空

这不很清楚嘛,本地的 git repo 文件有问题!

不是合并有问题,你本地的仓库就有问题了,只能把源码复制出来,删除本地仓库,再重新拉下来,再应用更改。

谁叫你用 wsl 呢!
crclz
2020-11-09 14:25:46 +08:00
@burnbrid @christin 貌似是 vscode 的 git graph 插件
Tomotoes
2020-11-09 14:50:07 +08:00
git reflog 了解下..
solider245
2020-11-09 20:46:42 +08:00
@reus 所以……明白了,就是土法炼钢,小煤窑挖矿,敲了重来?
@crclz 是的,是那个插件
@Tomotoes 好的,我去看看
solider245
2020-11-09 21:33:45 +08:00
@junwind 现在是远程仓库因为出错不正常,本地正常,如何解决?
solider245
2020-11-09 23:24:20 +08:00
@junwind
@reus
参照你们两位大神的问题,解决了。
1. 重新从远程仓库拉取文件,然后手动把重复的文件和出错的文件删除了。
出问题的原因在于使用了一个软件,会自动对文件夹进行版本管理,估计是引起的错误

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

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

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

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

© 2021 V2EX