Git:在Bitbucket网页中为何看不到我cherry-pick的提交?
嘿,我来帮你搞定这个头疼的问题!你本地用git cherry-pick合了三个提交,git log能看到但Bitbucket网页找不到,连带标签的提交也看不到,大概率是这些操作还没同步到远程,或者有小细节没做好,咱们一步步来排查:
第一步:确认你的补丁分支已经推送到Bitbucket远程
git cherry-pick是纯本地操作,你得把本地的改动推送到远程仓库,Bitbucket才能展示这些提交。先打开终端跑个命令看看:git branch -av看看你的补丁分支后面有没有对应的
origin/xxx远程分支。如果没有,就用这个命令推送(第一次推记得加-u绑定上游):git push -u origin <你的补丁分支名称>如果已经推过但之后又做了cherry-pick,直接跑
git push origin <分支名>就行。第二步:检查cherry-pick是否真的成功生成了提交
有时候cherry-pick遇到冲突,你可能以为解决完提交了,但其实没完成。可以用git reflog看看本地的操作记录,确认这三次cherry-pick是不是都生成了新的提交哈希。如果有冲突没处理完,本地的git log里也不会有这些提交,自然远程看不到。要是发现有未完成的cherry-pick,先解决冲突然后git cherry-pick --continue完成提交。第三步:手动推送标签到远程
Git的标签默认不会自动推送到远程,所以你得手动推送那个带标签的提交。如果是单个标签,跑:git push origin <你的标签名称>要是想把本地所有标签都推上去,就用:
git push origin --tags推完之后再去Bitbucket的标签页面看看,应该就能找到了。
第四步:检查Bitbucket网页的分支筛选和缓存
有时候可能是网页缓存或者选成了别的分支。先刷新Bitbucket页面,确认你选中的是自己的补丁分支,或者直接在提交搜索框里输入某个cherry-pick提交的哈希值,看看能不能搜到。
要是上面的步骤都试过还是不行,那可能是比较特殊的情况,比如远程分支和本地分支有不一致的历史,但这种情况很少见,先把前面的基础步骤都走一遍,大概率能解决!
内容的提问来源于stack exchange,提问作者Ray

