2016-03-22 8 views
2

変更をステージングしていないすべてのファイルに対してシェルコマンドを実行したいとします。GIT、変更されたファイルごとにコマンドを実行しますか?

など。 git status

On branch xxxxxxx 
Your branch is up-to-date with 'origin/xxxxxxxxx'. 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: client/.../reports.coffee 
    modified: client.../tools.coffee 

を示していた場合、私は、ファイルreports.coffeetools.coffee上でコマンドを実行します。

findを使用したくないのは、ファイルが異なる時間に変更される可能性があるためです。どのように私はそれを達成することができますか考えていますか?

答えて

2

良いチュートリアルですまた、このコマンドを使用することもできます。

git status -s | grep '??' | cut -f2 -d' ' | xargs echo

を、あなたはフックが、私が使用する必要があります

+0

私のマシンでは動作しません。私はgrep '??'に誤りがあると思う。 –

+0

git status -sは "M go-lib /..../ user.go"を出力します。 –

+0

'git status -s':ショートフォーマットの作業ツリーステータスを表示します。 'grep '??' ':追跡されていないファイルの場合である" ?? "を含む行だけをフィルタリングします。 'cut -f2 -d ''':文字列の2番目の部分だけを保持し、部分は空白で区切ります。 – dvxam

1

あなたはgitのフックを使用する必要があります。

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

あなたはファイルが.git/hooksに変更することがあります。

Here

+0

を実行したいコマンドによってechoを置き換えますか? –

+0

それはあなたのスクリプトを正確に実行したい時によって異なります。たとえば、コミットごとにステージングされていないファイルをチェックする場合は、 'pre-commit.sample'ファイルを修正する必要があります。 " Gitコミットを実行するたびにプリコミットスクリプトが実行され、コミットメッセージを生成するか、コミットオブジェクトを生成します。このフックを使用して、コミットしようとしているスナップショットを検査できます。 – Till

関連する問題