找到文件所属的git提交?

Xev*_*ous 5 git

给定一个随机文件,是否有规范方法从命令行确定该文件是否属于特定提交?

这类似于堆栈溢出问题find-out-git-commit-a-file-was-taken-from,除了我希望能够在脚本中使用它并且也不能创建临时分支.

Xev*_*ous 4

以下是我为此目的使用的脚本的摘录。我使用我有限的 git 知识和我在网上找到的其他脚本片段将它组合在一起。它工作得很好,但我经常发现在 git 中做事的方法比我通过反复试验学到的方法更简单。

FILE=$1

# git hash for file
HASH=`git hash-object $FILE`

# git revisions for file
REVS=`git log --pretty=%H -- $FILE`

# check each revision for checksum match
for rev in $REVS; do
    POSSIBLE=`git ls-tree $rev $FILE | awk '{print $3}'`
    if [[ $HASH == $POSSIBLE ]]; then
        echo $rev
    fi
done
Run Code Online (Sandbox Code Playgroud)

  • 除了将 `git log --pretty=...` 更改为 `git rev-list --all -- $FILE` 之外,我不会更改您的答案的任何内容。 (3认同)