我尝试恢复到以前的git提交:
git revert xxx
Run Code Online (Sandbox Code Playgroud)
我现在收到此错误作为回复:
fatal: bad object xxx
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我该如何解决?
Pra*_*rti 22
我不知道发生这种情况的确切原因.对我来说,这是因为我忘记将整个存储库拉到我的本地.我有2个或更多路径,每个路径从不同的分支拉
/path/branch_a/ -> pulled from branch A
/path/branch_b/ -> pulled from branch B
Run Code Online (Sandbox Code Playgroud)
在分支A上,我做了一些修改,并照常提交.我希望该提交(例如提交ID是abcdef123
)出现在分支B上,所以我使用
$ cd /path/branch_b/
$ git branch
master
branch_a
* branch_b
$ git cherry-pick abcdef123
Run Code Online (Sandbox Code Playgroud)
这给了我那种错误.所以我需要在获得提交之前拉出整个存储库
$ git pull
remote: Counting objects: 257, done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 216 (delta 187), reused 186 (delta 158)
Receiving objects: 100% (216/216), 53.13 KiB | 43 KiB/s, done.
Resolving deltas: 100% (187/187), completed with 38 local objects.
From github.com:username/my_repo
abcdef3..80c0d68 branch_a -> origin/branch_a
Already up-to-date.
$ git cherry-pick abcdef123
[branch_b ccddeef] Some commit message
1 file changed, 1 insertion(+), 1 deletion(-)
Run Code Online (Sandbox Code Playgroud)
Prz*_*eoR 13
在我的情况下,我从另一个我没有拉的分支中挑选,但是我试图从GH复制提交的ID(我没有在我当地的樱桃采摘中得到这个).
希望它有所帮助;-D
tor*_*rek 11
[ 编辑,2016年11月19日 ]虽然这通常表明存储库损坏,但是当某些命令 - 通常是另一个任务中的另一个Git - 正在打开并锁定内部文件时,它会发生在Windows上.在这种情况下,终止其他任务应该修复它.原始答案如下.
bad object
一些十六进制数字往往意味着标签中包含无效的引用号,但也可能出现在其他一些奇怪的情况下.例如,如果我这样做:
$ git tag foo
$ vi .git/refs/tags/foo
Run Code Online (Sandbox Code Playgroud)
并更改最后一个字符(在本例中为6到5)并写出:
$ git log foo
fatal: bad object foo
Run Code Online (Sandbox Code Playgroud)
这究竟是什么xxx
,它来自哪里?
我尝试从我的客户端不知道的分支合并时遇到了同样的错误(坏对象[hash]).(类似于PrzeoR的情况,但不需要拉取我需要取的)
在我的情况下,我需要运行git fetch以将我的客户端重新同步到服务器的状态.如果有人以与我相同的方式到达此主题并且可以从此洞察中受益,则发布此处.
git pull
git cherry-pick [hash]
fatal: bad object [hash]
git fetch
remote: Counting objects: 8, done. (etc.)
From github.com:repo/branch
* [new branch] branchname
git cherry-pick [hash]
[success]
Run Code Online (Sandbox Code Playgroud)
我不确定我是如何得到这个错误的,这就是我得到的错误。
fatal: bad object refs/remotes/origin/{branchname}
fatal: failed to run repack
Run Code Online (Sandbox Code Playgroud)
尝试通过 修剪 git 存储库git gc --aggressive --prune=now
。这没有帮助。
这个分支已经过时了,对我来说并不重要,所以我删除了分支文件夹
rm -rf .git/refs/remotes/origin/{branchname}
跑git gc
它成功进行了对象枚举和清理。
拉
或者
git 获取来源
原因:如果您尝试挑选的提交 ID 在您的本地 git 中不可用,则可能会出现此错误。
做一个git pull
会解决这个问题。如果这还没有修复,请共享提交 ID 的人将更改推送到origin
并执行git pull
归档时间: |
|
查看次数: |
68158 次 |
最近记录: |