は約

2017-12-30 33 views
0

私はリストにしようとしている間違った方法はMaking 'git log' ignore changes for certain pathsにアドバイスを以下、特定のディレクトリには触れていないブランチからコミット作業のgit REV-リストの構文を除外する:(は約

git rev-list heads/demo ^master -- . ':(exclude)demo' 

demoであることに注意してください枝のと除外するフォルダの名前の両方。)

は、結果は、他の経路に触れるすべてのコミットが含まれており、唯一のdemo/ディレクトリにのみタッチファイルをするものを除きます。代わりに私が見たいのは、demo/ディレクトリ内のファイルに触れないコミットだけです。明確にする:それはdemo/外のファイルが含まれているため、

cc3ecaa define a task for creating the demo app 
M .gitignore 
M Gruntfile.js 
A demo/compile 
A tasks/demo.js 

は現在含まれていますが、それはdemo/内のファイルが含まれているので、私はそれが除外されたいです。

答えて

0
awk ' !seen[$1]++ && NR!=FNR ' \ 
    <(git rev-list master..heads/demo -- demo/) \ 
    <(git rev-list master..heads/demo) 

または

awk ' !NF{ printit=1 } !seen[$1]++ && printit' <<EOD 
$(git rev-list master..heads/demo -- demo/) 

$(git rev-list master..heads/demo) 
EOD 

または

(git rev-list master..heads/demo -- demo/ 
    echo 
    git rev-list master..heads/demo) \ 
| awk '!NF { ++printit } seen[$1]++ && printit' 
+0

私はawkを経由して行かなければならなかったことを恐れていたが、私自身は私に数時間かかっていたためにそれを把握するために、そう心からの感謝。 – ccprog