差出人git hooks --help
:
post-checkout
This hook is invoked when a git checkout is run after having updated
the worktree. The hook is given three parameters: the ref of the
previous HEAD, the ref of the new HEAD (which may or may not have
changed), and a flag indicating whether the checkout was a branch
checkout (changing branches, flag=1) or a file checkout (retrieving a
file from the index, flag=0). This hook cannot affect the outcome of
git checkout.
したがって、気になる特定の拡張子を持つワークツリー内のすべてのファイルに対して実行されるチェックアウト後のフックを作成し、SetFile
それらを呼び出すことができます。これは、変更されていないファイルに対して操作を再実行し、後はまったく実行されないため、完全ではありませんがgit reset --hard
、ニーズには十分な場合があります。
名前の付いたすべてのファイル(他のファイルは除く)に対してこれを行うチェックアウト後のフック*.txt
は非常に簡単です。
#! /bin/sh
git ls-files -z -- '*.txt' | xargs -0 SetFile -t TEXT
-z
とは-0
、ハードケースのパス名(たとえば、埋め込みスペースを含むパス名)に対してこれを機能させます。