Git 如何获取提交ID列表的差异
如何获取提交ID列表的差异(包括所有文件更改) 我有一个来自2个分支的提交列表,我想找到差异并确认来自分支1的所有提交是否已经在分支2中可用Git 如何获取提交ID列表的差异,git,Git,如何获取提交ID列表的差异(包括所有文件更改) 我有一个来自2个分支的提交列表,我想找到差异并确认来自分支1的所有提交是否已经在分支2中可用 这个列表大约有100多个提交,我想为它获得一个单独的diff文件。对于您可以使用的每个提交 git branch --contains <commit> 看 只需将其包装到脚本中,并为列表中的每个提交运行它。Basic method 对于您的问题,最基本的答案是使用git-patch-id。请参阅git-patch-id1中的描述: 补丁ID
这个列表大约有100多个提交,我想为它获得一个单独的diff文件。对于您可以使用的每个提交
git branch --contains <commit>
看
只需将其包装到脚本中,并为列表中的每个提交运行它。Basic method
对于您的问题,最基本的答案是使用git-patch-id。请参阅git-patch-id1中的描述:
补丁ID只是与补丁相关联的diff的SHA-1,空白和行号被忽略。因此,它相当稳定,但同时也相当独特,即具有相同补丁ID的两个补丁几乎保证是相同的东西
瞧,你可以用这个东西来寻找可能的重复提交
然而,git补丁id有点笨重的接口——它要求标准输入上有一个diff文件。因此,对于id为commit-id的提交,您可以使用:
git diff COMMIT-ID~ COMMIT-ID | git patch
请注意git补丁的输出校验和是不同的,因为输入差异中存在一些差异。例如,如果添加-U选项,校验和会发生变化
有更好的办法!
事实证明,有一个工具包装了git patch-id。要从分支一获取所有提交,而分支二上没有这些差异,只需使用git log和一些额外的选项:
git log --cherry-pick --right-only --oneline --no-abbrev-commit TWO...ONE
商业选择是-樱桃挑选和-权利只。请参见git-log1——它们在那里描述得非常清楚
变差了?
至于从这些提交中获得单个差异,如果它们不是连续的,恐怕不可能。请记住,差异是基于存储库中以前的状态提交的。您最好的选择是选择对稳定分支的承诺,并做好解决冲突的准备。具体来说,您想实现什么?除了比较两个分支之外,您还需要差异吗?是的,由于一些错误,两个分支已损坏,我有一个100多个提交的列表,这些提交将在已知的稳定分支上完成。