繁体   English   中英

如何获取自创建分支以来更改文件的当前文件路径列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM