首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找可能被git cherry更改的文件

查找可能被git cherry更改的文件
EN

Stack Overflow用户
提问于 2021-11-23 18:49:50
回答 2查看 58关注 0票数 3

根据其手册页,git cherry进行了一些测试,以确定是否应该将提交选择到另一个分支中:

代码语言:javascript
复制
The equivalence test is based on the diff, after removing whitespace
and line numbers. git-cherry therefore detects when commits have been
"copied" by means of git-cherry-pick(1), git-am(1) or git-rebase(1).

我想创建一个脚本,通过删除只会更改某个文件的所有提交来进一步最小化精挑细选的候选文件列表。

例如,如果将带有更改的文件A、B、C的提交1放到我的分支中,则只会更改文件A,而B和C将已经包含更改,我希望脚本从候选列表中删除提交。

换句话说,如果我按照git cherry的建议精挑细选了一个提交,结果提交只会更改文件A,而不会更改其他文件,我会希望将其从我的列表中删除。

有没有一种简单的方法从Git中获取这些信息?

EN

回答 2

Stack Overflow用户

发布于 2021-11-23 22:39:44

通过删除只会更改特定文件的所有提交,进一步最小化了精挑细选的候选文件列表

您可以使用git diff-tree -p $commit | git apply --exclude=path/to/that/file --numstat,如果它列出了任何更改,则提交在其他文件中有更改,但这里不清楚“将更改”是什么意思。“会改变吗”,如果你再一次精挑细选,不管它在文件之外的改变是否已经被应用?

要做到这一点,唯一的方法是进行实际应用的测试运行。您可以自动执行该检查,但您在这里留下了许多问题。git diff-tree -p $commit | git apply --exclude=path/to/that/file -3,然后git diff --name-only查看是否有任何更改挂起,然后在执行或不执行整个樱桃选择之前执行git reset --hard

但是,精挑细选的提交可能会对当前的上游提示进行更改,无论它是否已经被精挑细选,如果后续的工作恢复或修改了它。因此,如果您不关心是否重新应用随后恢复的更改,那么为什么要从git cherry列表开始呢?这里有些东西说不通。

票数 1
EN

Stack Overflow用户

发布于 2021-11-24 22:05:55

(取决于你如何解释“简单”……)

git有一个patch-id command命令,它用一些规则(忽略行号和空格)构建一个散列,以尝试具有以下属性:引入相同更改的两个补丁将具有相同的补丁id。

您可以通过以下方式使用它:

对于每次提交:

  1. 选择一种方法来生成它在that/file

以外的文件上生成的修补程序

  1. 通过| git patch-id --stable

运行该修补程序

  1. 一旦计算出提交范围内的所有补丁in,就可以将它们与list

中的修剪提交进行比较

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

https://stackoverflow.com/questions/70086306

复制
相关文章

相似问题

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