【发布时间】:2012-04-28 20:31:01
【问题描述】:
考虑以下用例:
我正在本地分支上工作,而主分支上已经完成了重构。现在一些文件(类)已被重命名和/或移动到新位置。合并时,由于缺少类,我会遇到很多导入错误。
--A--B--C--D--E-- (master)
\ \
F--G--H--I--J (topic)
在A 中有我在F--G--H--I 中使用的旧名称。
在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 log使用-M选项查找重命名。然后,您只想报告重命名,这可以通过--diff-filter选项完成。我在回答中添加了更多细节。 -
我认为重要的是要注意,一个特定的文件在不同的提交中被多次重命名
标签: git refactoring git-bash