如何找到原名称已知的重命名文件的新路径?

2024-02-06

考虑以下用例:

我正在本地分支上工作,同时在主分支上完成了重构。现在,一些文件(类)已被重命名和/或移动到新位置。合并时,由于缺少类,我收到很多很多导入错误。

--A--B--C--D--E-- (master)
   \           \
    F--G--H--I--J  (topic)

In A有我用过的旧名字F--G--H--I.

In B--C--D--E文件被重构,产生新的文件名E。这包括链式重命名,例如

   B: path/to/File.java              
-> C: path/to/BetterName.java
-> D: better/package/BetterName.java 
-> E: final/package/FinalName.java

现在合并结果为J由于我的分支上缺少重构,存在许多(编译)错误。 (因为我仍然参考path.to.File代替final.package.FinalName

为了修复损坏的构建,我需要知道旧类的新名称。

是否有 git 命令可以获取已应用于特定文件的所有重命名?


Git 应该找到文件的重命名。但是,如果文件中有 50% 或更多行发生更改,则将不再被视为重命名。如果您愿意,您可以更改此阈值。

这是执行此操作的命令:

git log -M --diff-filter=R --stat

它只会向您显示重命名。如果您想将阈值更改为默认 50% 以外的其他值,只需将该数字添加到 M 选项即可:

git log -M90 --diff-filter=R --stat

仅当内容更改不超过 10% 时才会将文件视为重命名

UPDATE:

要跳过所有中间步骤,请使用 diff 代替。 Git 将为您遵循重命名:

git diff -M --diff-filter=R --name-status ..master | cut -f2-

当你在你的主题分支上时。

然后,您可以通过管道将其生成一堆 sed 指令来调整您的引用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到原名称已知的重命名文件的新路径? 的相关文章

随机推荐