我有一个重命名文件的提交。是否有可能从旧文件名和提交密钥中获取新文件名?
示例:file.php
在提交filex.php
时重命名为5119afae52e5ae08ca8e378e00895d824a179f03
。
我正在搜索有关filex.php
和5119afae52e5ae08ca8e378e00895d824a179f03
的信息中返回file.php
的内容。
答案 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
命令。oldname
在commitid
的父级中不存在或未在该提交中重命名,则不会输出任何内容。答案 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 ...
)