git時間に基づいてフォルダの内容を並べ替える

git時間に基づいてフォルダの内容を並べ替える

gitに追加されたファイルに基づいてフォルダ内のファイルを並べ替えたいと思います。

私が探していますgit ls-files修正時間でソートしかし、これは時間ごとにソートされたgitのすべてのファイルを提供します。そのサブディレクトリのファイル/フォルダのみが必要です。

たとえば、

some-super-ls /my/git/repo/some/sub/directory

lsこれにより、これに似ていますが、日付/時刻別にソートされた出力が得られます。可能ですか?

答え1

の変種このリンクされた質問に対する回答最後にコミットされた変更に基づいて、現在のディレクトリで追跡されているすべてのファイルを時間の逆順に一覧表示します。

git log --pretty='' --name-only | awk '/^[^/]*$/ { if (!seen[$0]++) print }'

答え2

これがオプションの場合は、最新のコミットのエポック時間()を返すことでzsh使用できますoe(またはOe最新から最も古いもの、または最も古いものから最新のソートが必要かどうかに応じて)。git log%ct

前任者。

print -rl *(Noe:'REPLY=$(git log -1 --format=%ct $REPLY)':)

コマンドを覚えて入力する必要がないように、次の便利な機能を定義できます。

ct() { REPLY=$(git log -1 --format=%ct $REPLY); }

その後、使用

print -rl *(Noe:ct:)

これは以下を使用して行われます。zsh グローバル予選フォームoC:

ファイル名のソート方法を指定します。

特に

oe と o+ は特別なケースです。それぞれの後には、e glob修飾子と+ glob修飾子で区切られたシェルコードが続きます。エントリーのファイル名に設定されたREPLYパラメーターと、zsh_eval_contextに追加されたglobsortを使用して、一致する各ファイルに対してコードが実行されます。コードは何らかの方法でREPLYパラメーターを変更する必要があります。戻り値は、ファイル名の代わりに引数値をソートする文字列として使用します。


引用:

関連情報