排除git rev-list的语法错误处理

时间:2017-12-30 19:45:09

标签: git bash

我正在尝试按照Making 'git log' ignore changes for certain paths中的建议列出来自不触及某个目录的分支的提交:

git rev-list heads/demo ^master -- . ':(exclude)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/以外的文件,但我希望将其排除,因为它包含demo/内的文件。

1 个答案:

答案 0 :(得分: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'