我的一个克隆存储库是从git fsck
获取的致命:松散的物体40bda4e3b79c3d7bf598df31d9e68470f97a3f79(存储在.git / objects / 40 / bda4e3b79c3d7bf598df31d9e68470f97a3f79中)已损坏
我还有另一份fsck干净利落的副本。
我已经尝试过nuking目录/子目录,其中包含致命的目录/子目录 重新开始。问题还在继续。
我真的不关心任何特定文件,我只想要存储库 干净利落地结帐。我该怎么办?
注意:远程存储库托管在github上。
答案 0 :(得分:25)
简单回答:将旧回购搬走,然后退回。如果你想保留旧仓库中的东西,有办法获得它们,但首先得到一个好的回购。
答案 1 :(得分:4)
首先,您可以检查文件系统是否有错误:fsck -y
然后,检查git存储库:git fsck
答案 2 :(得分:4)
这个想法是:
.git
内的当前git记录(让我们用“项目A”表示)。cd
进入项目A并进行git clone并重置为最后一次提交。cd
进入项目A并使用git status
查看项目A的状态。应该就好像没有发生任何腐败一样。简而言之,制作一份副本以保留当前的工作区域,并通过替换文件将其与新克隆合并,然后正常处理您的更改。
这是实际行动:
首先我看到我有一个腐败(这是因为我强迫我的虚拟机昨天正常关闭:P):
✘domicor @ ubuntu~/ dotfilesmaster●gitstatus 错误:目标文件.git / objects / cd / 593f6db1d5050406e15b9c80d215fd48db39f4为空 错误:目标文件.git / objects / cd / 593f6db1d5050406e15b9c80d215fd48db39f4为空 致命:松散的对象cd593f6db1d5050406e15b9c80d215fd48db39f4(存储在.git / objects / cd / 593f6db1d5050406e15b9c80d215fd48db39f4中)已损坏
制作dotfiles
文件夹的副本,然后删除.git
文件夹。
$ cd~ / dotfiles $ rm -rf .git
然后重新创建一个git repo。
$ git init
添加遥控器。
$ git remote add origin git@git.oschina.net:domicor / dotfiles.git
从遥控器获取。
$ git fetch
现在重置HEAD。
$ git reset --hard origin / master
请注意,在我从远程获取后,我发出git status
命令来检查我的回购状态。您可以看到所有文件都未跟踪。从我的git init
命令到git reset
命令,命令行提示符的第一部分是橙色,表示当我初始化我的repo时,git检测到文件并在重置后,所有文件都恢复到状态HEAD因此是绿色提示。
设置上游分支:
$ git branch --set-upstream-to = origin / master master
现在手动或通过命令行从备份文件夹(对我来说是dotfiles (copy)
)复制文件,以替换dotfiles
文件夹中的文件。检查状态,应该像我的屏幕截图一样进行更改:
现在您可以git diff your-filename
检查您的更改是否已正确应用,并且您可以从现在开始添加文件和提交。 \ O /
为了理解它,git VCS只会记录您的更改。当VCS损坏时,您的文件仍然是安全的。当你离开它们时它们仍在那里。所以你备份你的文件并从其他地方恢复git记录,git可以将恢复副本与你当前的文件状态进行比较,并就腐败之前发生的变化提出想法。并欢呼\ o /
答案 3 :(得分:1)
我遇到了这个问题,这个简单的技巧解决了这个问题。
假设您在分支为“ my-new-feature”的名为“ my-project”的文件夹中遇到此问题,将存储库克隆到名为“ my-project-dummy”的新文件夹中,并签出为“ my-new” -功能”
删除“ my-project”文件夹中的“ .git”文件夹,并将“ .git”文件夹从“ my-project-dummy”文件夹复制到“ my-project”
答案 4 :(得分:0)
对另一个分支执行git checkout
,您将获得已更改文件的列表,只需提交它们并进入分支。
如果您这样做,问题将得到解决,下次当您进行一些更改时git status
应该有效。
答案 5 :(得分:0)
你应该重新创建一个仓库:
答案 6 :(得分:-4)
最简单的答案是" rm -rf .git ..." http://www.bazhukov.net/2015/02/git-corrupt-loose-object/