从不同的仓库选择提交

14

我试图挑选这些提交记录:

https://github(dot)com/AICP/frameworks_base/到https://github(dot)com/Gopinaidu7/android_frameworks_base

我创建了一个名为master的新分支并切换到它。 然后我执行了以下操作:

git cherry-pick 59ebfb7

然后它变得

fatal: bad revision '59ebfb7'

我也尝试了:

git cherry-pick 59ebfb7146616e57c15469d7ea85c4362c2fab3c 

并收到了这个错误

fatal: bad object 59ebfb7146616e57c15469d7ea85c4362c2fab3c.

我做错了,昨晚以来一直尝试挑选那些提交记录。
我没能做到,请问有人能指点我正确的命令顺序吗?


你能解释一下“我创建了一个名为master的新分支并切换到它”是什么意思吗?你是否在现有的存储库中为https://github.com/AICP/frameworks_base添加了一个新的远程? - Guildencrantz
3个回答

20

你需要先将另一个仓库添加为远程仓库:

 git clone  https://github.com/Gopinaidu7/android_frameworks_base
 cd android_frameworks_base
 git remote add other https://github.com/AICP/frameworks_base

然后获取:

 git fetch other

现在你可以使用SHA1选择性地挑选代码,然后推送。

如果被挑选的commit是一个合并过的commit:

git cherry-pick -m 1 59ebfb7

@Gopinaidu,你使用了以斜杠(/)结尾的旧URL。正如我所说,我已经编辑了答案。此外,您需要在另一个全新的空文件夹中执行此操作:例如~/test,并且不要忘记在git clone部分之后添加cd ~/test/android_frameworks_base:您需要在克隆的存储库中进行其他git命令。 - VonC
@Gopinaidu 请查看http://stackoverflow.com/posts/41413383/revisions,以查看我已删除的内容。 - VonC
对不起,我忘记改目录了,上面的评论是一个错误。 - Gopinaidu
以下是错误信息:gopinaidunani@gopinaidu:/framework/android_frameworks_base$ git cherry-pick 59ebfb7146616e57c15469d7ea85c4362c2fab3c 错误:提交 59ebfb7146616e57c15469d7ea85c4362c2fab3c 是一个合并提交,但没有给出 -m 选项。 致命错误:无法进行 cherry-pick 操作。 gopinaidunani@gopinaidu:/framework/android_frameworks_base$ - Gopinaidu
谢谢兄弟,你救了我的一天。 - Gopinaidu
显示剩余3条评论

1

您无需创建新分支,只需按照@Vonc的建议克隆目标分支,然后运行此命令:

git checkout target_branch
git fetch https://github.com/AICP/frameworks_base && git cherry-pick 59ebfb7

1
这段代码的含义是:在不用添加远程库的情况下,从其他构建目录中提取更改并合并到本地代码中。非常有用!本地操作为执行以下命令: git fetch /another_build_dir/ && git cherry-pick <commit-it> - QbProg

0
每当您尝试挑选一个提交(commit),但本地没有该远程分支时,就会出现“错误的修订版本”消息。 解决方案
git fetch origin <remote_committed_branch>
git cherry-pick <commit-id>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接