git cherry-check error "fatal: bad object"

原因是local的branch上没有那个SHA1.

那个SHA1是另一个branch上,需要更新local branch.


方法1:

repo sync 本地branch,这样本地的是latest


以下来自于

http://stackoverflow.com/questions/13788945/how-to-cherry-pick-from-a-remote-branch

方法2:

- git checkout branch-a
- git pull origin branch-a
- git checkout branch-b
- git pull origin branch-b
- git cherry-pick <hash>

(branch-a 另一个branch.  branch-b本地)

方法3:

# fetch just the one remote
git fetch <remote>
# or fetch from all remotes git fetch --all
# make sure you're back on the branch you want to cherry-pick to
git cherry-pick xyz


git用法参考

http://www.open-open.com/lib/view/open1328069889514.html




### 如何解决 Git cherry-pick 命令遇到的 'fatal: bad object' 错误 当尝试使用 `git cherry-pick` 时如果遇到了 `'fatal: bad object commit_id'` 的错误,这通常意味着指定的提交ID (commit ID) 并不存在于当前仓库的历史记录中。为了成功应用来自其他分支(如 develop)的一个特定提交到 new_feature 分支上,可以按照下面的方法操作: #### 方法一:获取远程更新并重新尝试 确保本地拥有最新的更改,可以通过拉取最新版本来同步远端的变化至本地环境。 ```bash git fetch origin ``` 之后再试一次带有正确参数的 `cherry-pick` 操作: ```bash git checkout new_feature git cherry-pick <commit-id> ``` 这里 `<commit-id>` 是想要挑拣的那个具体提交对象的名字或哈希值[^1]。 #### 方法二:确认目标提交存在于本地历史中 由于 `git cherry-pick` 只能应用于已知存在的提交,因此需要先验证该提交确实存在并且已经被下载到了本地副本里。可以通过查看日志找到所需的提交信息: ```bash git log --oneline develop | grep "<part of the message or hash>" ``` 一旦找到了确切的目标提交,则可以直接对其进行挑选而不会触发上述提到的对象丢失问题[^2]。 #### 方法三:从另一分支检出所需提交后再做处理 假如仍然无法解决问题,可能是因为所要选取的提交并不属于任何追踪路径中的任何一个分支。此时可以在临时创建的新分支基础上完成此过程,然后再合并回原工作区: ```bash git checkout -b temp_branch_for_cherrypicking develop git checkout new_feature git cherry-pick <commit-id-from-temp-branch> # 完成后可删除临时分支 git branch -d temp_branch_for_cherrypicking ``` 通过以上几种方式应该能够有效规避因缺少相应提交而导致的 `bad object` 类型的错误提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值