15

指定したディレクトリにあるすべてのファイルのgit作成日(ファイルが追加された最初のコミット日)を確認したい。

4

2 に答える 2

33

解決策をいくつかのステップに分けます。

リポジトリ内のすべてのファイルのリストを取得する

$ git ls-files

これは、リポジトリ内のすべてのファイルの相対パスのリストを返します。

特定のファイルの最初のコミットの SHA-1 を取得します。

$ git rev-list HEAD <file> | tail -n 1

これは、指定されたファイルのすべての親のないコミットのリストを新しい順に返します。最後の 1 つは、指定されたファイルの最初のコミットの SHA-1 ハッシュです。

を実行すると、これを確認できますgit log --raw <hash>。次のように表示されます。

commit <commit_hash>
Author: Susy Q <suzy@example.com>
Date:   Wed Aug 24 12:36:34 2011 -0400

    Add new module 'example.py'

:000000 100644 0000000... <hash>... A  example.py

特定のコミットの日付を表示する

$ git show -s --format="%ci" <hash>

すべてを bash スクリプトにまとめます。

#!/bin/bash
for file in $(git ls-files)
do
    HASH=$(git rev-list HEAD "$file" | tail -n 1)
    DATE=$(git show -s --format="%ci" $HASH --)
    printf "%-35s %s\n  %s\n" "$file" $HASH: "$DATE"
done
于 2012-06-11T07:14:13.523 に答える
3

さて、私はエレガントではないが、ある種の作品の解決策を考案しました:

for file in dir/*; do echo -e "$file: \t\t `git log $file|grep Date|tail -1`"; done

git log各ファイルで実行しgrepてから ing することで機能し、そのファイルに関する各コミットの日付のみを取得します。次にtail -1、最初のコミットの日付のみを取得するようにします。はecho -e "..."、(それほど) フレンドリーな方法で情報を出力するためだけに存在します!

于 2012-06-11T06:58:40.857 に答える