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

问题描述 投票:0回答:1

我正在尝试按照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/中的文件。

git bash
1个回答
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'
© www.soinside.com 2019 - 2024. All rights reserved.