簡體   English   中英

git 如何列出兩次提交之間的所有文件和目錄重命名

[英]git How to list all file and directory renames between two commits

我正在編寫一個使用 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

這將向您顯示從最新到最舊的重命名歷史。

output 看起來像這樣:

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 ),數字是提交之間的相似程度。 列出的第一個文件名是舊文件名,第二個文件名是新文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM