2017-06-06 29 views
0

我有一個文件被重命名的提交。是否有可能從舊文件名和提交鍵中獲取新文件名?獲取新文件名

示例:file.php在承諾5119afae52e5ae08ca8e378e00895d824a179f03處重命名爲filex.php

我在尋找的東西從5119afae52e5ae08ca8e378e00895d824a179f03file.php信息返回filex.php

+0

這個文件上的'''git diff'''不起作用嗎? – Zooly

回答

1

下面的bash腳本將做的工作:

使用

new_name_of_renamed_file <oldname> <commitid> 

new_name_of_renamed_file

#!/usr/bin/env bash 

if [ $# -ne 2 ] 
then 
    echo "Usage: new_name_of_renamed_file <oldname> <commitid>" 
    exit 1 
fi 

pattern="^rename from ${1/./\\.}\$" 
git diff -M100% "$2"^.."$2"|grep -A1 "$pattern"|tail -n1|sed 's/^rename to //' 

注意

  • 腳本只檢測精確重命名。如果您對重命名文件感興趣,那麼您可以將相應的相似性閾值傳遞給git diff -M命令。
  • 如果文件oldnamecommitid的父級中不存在或未在該提交中重命名,則不輸出任何內容。
0

如果你運行:

git log --oneline -- file.php 

,你會看到所有修改這個file.php的提交列表。

file.php已被重命名爲filex.php時,這些提交中的最新提交(最上面的那個提交)。

您可以運行git diff <hash>來確認這一點,其中<hash>是您使用git log找到的提交ID。

(注:這也將工作沒有--oneline選項; --oneline選項可以讓你每犯正好一條線,這使得它可能更容易理解整個列表
您也可以嘗試git log --oneline --graph ...

+0

感謝您的回答。 :)但它似乎並沒有像預期的那樣工作,因爲這個特定的文件似乎從''file.php''重命名爲''filex.php'',後來又重命名爲''file.php''。但除此之外,我已經有了具體的提交哈希,我只是缺少文件名「filex.php」。 – ScientiaEtVeritas

+0

好的。試試這個:'git log --name-status - file.php'。您應該能夠發現何時刪除或添加此文件。 – LeGEC