我迷失在一個回購迷宮中,一些文件被重新讀入,而舊版本因爲一個不太好的轉換而被重新命名。如何查找所有提交git的所有重命名?
無論如何,我想列出在某些時候重新命名的所有文件,也就是列出所有提交中的所有重命名文件。
我迷失在一個回購迷宮中,一些文件被重新讀入,而舊版本因爲一個不太好的轉換而被重新命名。如何查找所有提交git的所有重命名?
無論如何,我想列出在某些時候重新命名的所有文件,也就是列出所有提交中的所有重命名文件。
這樣就夠了嗎?
git whatchanged -M5 --summary | grep rename | grep '=>'
下面是修改後的版本,這將不改名,並刪除的文件:
git whatchanged -M5 --summary | grep -E 'rename.*=>|delete mode'
這會給你所有從當前分支的HEAD重命名和它的祖先,包括合併後的父母直到第一次提交。 -M5將具有50%或更多相似的文件報告爲重命名;這可能會降低百分比,但您可以更改它(5讀取爲.5或50%,因此您可以將其更改爲M8,達到80%)。被警告,如果有很多提交,將需要很長時間。
我建議您將提交諸如範圍:
git whatchanged -M5 --summary <commit-id>..HEAD | grep rename | grep '=>'
至於我可以告訴你需要開始一個承諾,我不知道你怎麼會得到一個全面的列表立即在所有分支和標籤上重命名文件。如果您想要檢查不同的分支,或者在單個回購中有獨立提交歷史的分支,則需要在每個分支上運行建議的命令。
'git log --follow' from [this question](http://stackoverflow.com/questions/5743739/how-to-really-show-logs-of-renamed-files-with-git) – johnMa
對不起,我想列出所有提交中已更改的所有*文件,'--follow'僅適用於單個文件。 – Roberto
這聽起來像你是在一個噁心的情況。你能夠在rebase之前使用'git reflog'(或者一個分支,或者其他的東西)並且從那裏重做你的提交,所以你不在這個位置? – James