[英]How to get the list of changed files since the creation of a branch in git
[英]How to get list of current filepaths of changed files since creation of branch
我正在尝试获取在当前分支中更改的所有 python 文件的列表,该列表稍后将被输入脚本以运行 linter。 以前我是通过以下命令来做的。
FORK_POINT=$(git rev-parse origin/master)
PY_FILES=$(git --no-pager diff --name-only HEAD $FORK_POINT | grep "\.py$")
在我当前的分支中,我的一项更改是将一些文件移动到另一个文件夹,但是此代码正在返回移动文件的原始文件路径。 如何修改它以返回当前文件路径?
TL;DR:交换差异“边”。
你的差异命令:
git [options] diff HEAD [other-commit]
要求 Git 拍摄两张快照:
HEAD
和
other-commit
并找到一些合理的最小更改集,如果应用于列出的第一个提交HEAD
将更改这些文件以生成包含在第二个提交中的文件集。 如果 Git 将第一组中名为newname
的文件与第二组中名为oldname
的文件匹配,则指令包括“将新名称重命名为旧名称”。
要以有保证且可机器解析的方式获取这些指令,请使用:
git diff --name-status --find-renames
而不仅仅是git diff --name-only
。 status
信将是R
,然后是为什么 Git 认为这些文件足够相似,以百分比表示,然后是两个名称。
要获取将旧名称更改为新名称的说明,请按相反的顺序执行 diff。 将另一个提交放在Spot-the-Difference 游戏的左侧,并将HEAD
提交放在右侧。 Git 将再次找到一些合理的最小更改集,如果应用这些更改,会将左侧(旧)提交变为右侧(新)提交 - 但由于旧提交现在是左侧的提交,这些说明会说“将旧名称重命名为新名称”。
请注意, --name-only
或--name-status
抑制了大多数指令(这本身很好,实际上加速了git diff
的工作)。 然而,顺序仍然很重要——如果只是因为重命名指令将左侧提交的文件名放在左侧,而将右侧提交的文件名放在右侧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.