资讯中心

从git 一个分支cherry-pick apk 到另外一个分支!

📅 2026/7/22 0:39:32
从git 一个分支cherry-pick apk 到另外一个分支!
1.找到原分支的hash值在原分支下面执行git log --onelineb35b237c9f42.在新分支上执行git cherry-pick b35b237c9f4error: could not apply b35b237c9f4… 修复缺陷hint: After resolving the conflicts, mark them withhint: “git add/rm ”, then runhint: “git cherry-pick --continue”.hint: You can instead skip this commit with “git cherry-pick --skip”.hint: To abort and get back to the state before “git cherry-pick”,hint: run “git cherry-pick --abort”.hint: Disable this message with “git config set advice.mergeConflict false”warning: Cannot merge binary files绝大多数情况下如果两个分支都对同一个二进制文件如 .apk、.jar、.png 等进行过修改cherry-pick 或 merge 时注定会发生冲突。为什么二进制文件注定会冲突Git 是一个基于文本行的版本控制系统。对于代码等文本文件Git 可以对比行与行的差异并尝试自动合并。但是对于 APK 这样的二进制文件Git 无法读取其内部结构也无法进行“按行合并”。只要目标分支你当前所在的物理分支和源分支你提取 commit 的分支上的这个 APK 文件自它们分叉以来都发生过任何改动Git 就无法判断应该保留哪一个因此一定会报 Cannot merge binary files无法合并二进制文件并产生冲突。如何快速解决这个冲突由于是二进制文件你无法像普通文本文件那样打开它去手动修改冲突标记 等。你只能做“二选一”的抉择保留当前分支的版本–ours采用你正在 cherry-pick 的那个提交里的新版本–theirs既然你的提交注释是“修复一些缺陷”你通常是需要使用 cherry-pick 带来的新 APK 覆盖旧 APK。你可以按照以下步骤解决采用 cherry-pick 提交中的新 APK 文件推荐在冲突状态下运行以下命令直接使用“对方”即你要 cherry-pick 的提交 b35b237c9f4的 APK 文件git checkout --theirs 1.apk将该文件标记为已解决暂存git add 1.apk继续完成 cherry-pickgit cherry-pick --continue此时会弹出编辑器让你确认提交信息保存并退出即可顺利完成同步.Linux 终端中默认的 nano 编辑器。你可以通过以下步骤保存并退出快捷方式最推荐一步到位按键盘上的 Ctrl X退出。此时屏幕最下方会询问Save modified buffer?按键盘上的 Y 键表示 Yes 确认保存。接着屏幕会显示文件名 .git/COMMIT_EDITMSG直接按 Enter回车键 确认。此时编辑器就会自动保存并关闭Git 也会继续完成 cherry-pick 提交。常规方式分步操作按 Ctrl O写入/保存即底部菜单的 ^O Write Out。按 Enter回车键 确认文件名。按 Ctrl X退出即底部菜单的 ^X Exit。(注底部菜单中的 ^ 符号代表键盘上的 Ctrl 键。)为什么还需要 git push所有的操作目前只在“本地”你刚才做的 git cherry-pick、解决冲突、以及在 nano 编辑器里保存并退出这些操作全部都只发生在你的本地电脑上你的本地 master 分支。远程仓库还没有更新git push origin HEAD:refs/for/master