git - git如何列出两次提交之间的所有文件和目录重命名
问题描述
我正在编写一个使用 git 的脚本。它需要知道所有重命名的目录和文件的旧文件路径和新文件路径。
我想做的例子:git diff --find-renames-only someGitHash someGitHash
然后我想看到一个类似的列表:
rename old/path/old-file-name.extension->new/path/new-file-name.extension
或者
rename from source/README.md
rename to documentation/README.md
或类似的东西,只要它具有带有旧目录路径的旧文件名和带有新目录路径的新文件名。
到目前为止,我到处乱找,我能找到的最接近的东西是git diff --find-renames
git diff --find-renames
给了我想要的数据,但是每个文件的数据太多了。这绝对不是我想要处理和解析的事情。我正在使用的一些 git 存储库可能有数千个文件/文件夹重命名......
例子:
...tons more data that I do not want to parse through
rename from source/README.md
rename to documentation/README.md
...tons more data including diffs of files before and after...
this pattern continued for each file...
如何在没有额外数据的情况下列出两个 git 提交之间的所有文件和目录重命名?
任何帮助将不胜感激,谢谢!
解决方案
git log --name-status <start_commit>..<end_commit> | grep ^R
这将向您显示从最新到最旧的重命名历史。
输出如下所示:
R100 the-5-min/.watchmanconfig the-10-min/.watchmanconfig
R100 the-5-min/App.tsx the-10-min/App.tsx
R085 the-5-min/app.json the-10-min/app.json
R100 the-5-min/assets/examples/accordion.png the-10-min/assets/examples/accordion.png
R100 the-5-min/assets/examples/angular-gradient.png the-10-min/assets/examples/angular-gradient.png
第一个字母是更改的类型(不同更改类型的详细信息请参见--diff-filter),数字是提交之间的相似程度。列出的第一个文件名是旧文件名,第二个文件名是新文件名。
推荐阅读
- c# - 使用 String.Format 创建正则表达式
- rust - 什么时候只需要 PartialEq 而不需要 Eq?
- python - 可以使用 Aravis github 项目更改相机的设备参数
- c++ - 属性 QtObject marginHints: QtObject { ... }
- python - RPI 上的 Selenium Webdriver 拒绝来自 Crontab 的连接,从终端工作
- angular - DataService遇到声明异常FAILED-Angular Unit testing
- pytorch - 如何使用 pytorch 制作具有多个输出的神经网络?
- javascript - 附加具有不同属性的元素
- python - AVL 树不更新高度
- asp.net - 使用 asp.net Web 表单 Gridview 从 SQL 数据源下载文件