首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git cherry:如何通过提交消息识别等效提交

git cherry:如何通过提交消息识别等效提交
EN

Stack Overflow用户
提问于 2017-07-30 04:21:56
回答 3查看 792关注 0票数 3

在我的项目中,有一个stable分支和一个dev分支。提交是从dev分支选择到stable分支的。

为了过滤dev上尚未合并到stable的所有提交,git cherry -v stable dev看起来是个不错的选择。然而,它通过diff来识别等价性,而diff通常在cherry-pick期间解决合并冲突后发生变化。

等价物测试基于diff,去掉空格和行号之后。因此,git-cherry通过git-cherry(1)、git-am(1)或git-rebase(1)检测提交时的“复制”。

我想知道是否有类似于git cherry的命令,但是通过提交消息来标识等效的提交?

EN

回答 3

Stack Overflow用户

发布于 2017-07-30 05:11:52

似乎没有直接的方法可以做到这一点,所以我写了一个简短的脚本:

代码语言:javascript
复制
#!/bin/bash
git cherry -v stable dev | grep + | cut -d ' ' -f 3- > /tmp/unmerged
xargs -a /tmp/unmerged  -I{} git --no-pager log stable --pretty=oneline --grep {} | cut -d ' ' -f 2- > /tmp/cherry-picked
diff /tmp/unmerged /tmp/cherry-picked

解释

git cherry -v stable dev | grep + | cut -d ' ' -f 3- > /tmp/unmerged编写仅存在于dev分支上的提交消息。这些提交包括已被选中并更改为stable分支的提交,我们需要在下一步筛选出这些提交。

xargs -a /tmp/unmerged -I{} git --no-pager log stable --pretty=oneline --grep {} | cut -d ' ' -f 2- > /tmp/cherry-picked从(1)输出与stable上相同的消息一起出现的提交消息。换句话说,/tmp/cherry-picked存储的所有提交都是精心挑选的,并从dev更改为stable

最后,diff /tmp/unmerged /tmp/cherry-pickeddev上发出所有提交,其中在stable上没有找到具有相同提交消息的提交。

票数 2
EN

Stack Overflow用户

发布于 2017-07-30 06:22:30

如果dev中的提交不是基于重定向的,那么可以使用git cherry-pick -x,显式地标记源。没有自动使用这些信息,但是有了一些巴什福,就有可能使用它。

票数 1
EN

Stack Overflow用户

发布于 2017-11-14 14:52:00

您想要使用patch-id。这是git cherry使用的机制。

若要找到与提交3642151相同的结果,请运行:

git show 3642151 | git patch-id

您应该得到一个包含两个散列的行;第一个是patchid (称为PATCHID_FROM_ABOVE)。

git log -p | git patch-id | grep PATCHID_FROM_ABOVE

这将为您提供与该修补程序对应的所有提交的列表。

失窃:http://git.661346.n2.nabble.com/git-cherry-to-find-equivalent-commit-IDs-td3440883.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45396346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档