获取新文件名

时间:2017-06-06 09:35:03

标签: git

我有一个重命名文件的提交。是否有可能从旧文件名和提交密钥中获取新文件名?

示例:file.php在提交filex.php时重命名为5119afae52e5ae08ca8e378e00895d824a179f03

我正在搜索有关filex.php5119afae52e5ae08ca8e378e00895d824a179f03的信息中返回file.php的内容。

2 个答案:

答案 0 :(得分: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的父级中不存在或未在该提交中重命名,则不会输出任何内容。

答案 1 :(得分: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 ...