GIT-CHECK-ATTR(1)
π NAME π
okay bestie, meet git-check-attr(1) β the absolute icon that displays gitattributes information. That's the whole vibe: it tells you what a gitattribute is doing on a path. No cap. β¨
πΈ SYNOPSIS πΈ
two synopsis forms, both precious:
git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
π DESCRIPTION π
For every pathname, this command will list if each attribute is unspecified, set, or unset as a gitattribute on that pathname. literally that's the whole job, and it ate. π
β¨ OPTIONS β¨
-a,--allβ list all attributes that are associated with the specified paths. If this option is used, then unspecified attributes will not be included in the output. slay, but filtered.--cachedβ consider.gitattributesin the index only, ignoring the working tree. index-only behavior, iykyk.--stdinβ read pathnames from the standard input, one per line, instead of from the command line. feed it paths, bestie.-zβ the output format is modified to be machine-parsable. If--stdinis also given, input paths are separated with aNULcharacter instead of a linefeed character. NGL, very clean for scripts.--source=<tree-ish>β check attributes against the specified tree-ish. It is common to specify the source tree by naming a commit, branch, or tag associated with it. pick your source, periodt.--β interpret all preceding arguments as attributes and all following arguments as path names. this little divider is doing main character work.
If none of --stdin, --all, or -- is used, the first argument will be treated as an attribute and the rest of the arguments as pathnames.
π¦ OUTPUT π¦
The output is of the form:
<path> COLON SP <attribute> COLON SP <info> LF
unless -z is in effect, in which case NUL is used as delimiter:
<path> NUL <attribute> NUL <info> NUL
<path> is the path of a file being queried, <attribute> is an attribute being queried, and <info> can be either:
unspecifiedβ when the attribute is not defined for the path.unsetβ when the attribute is defined as false.setβ when the attribute is defined as true.<value>β when a value has been assigned to the attribute.
heads up bestie: Buffering happens as documented under theGIT_FLUSHoption ingit(1). The caller is responsible for avoiding deadlocks caused by overfilling an input buffer or reading from an empty output buffer. π don't let your pipes get weird.
π EXAMPLES π
In the examples, the following .gitattributes file is used:
*.java diff=java -crlf myAttr
NoMyAttr.java !myAttr
README caveat=unspecified
- Listing a single attribute:
$ git check-attr diff org/example/MyClass.java
org/example/MyClass.java: diff: java
- Listing multiple attributes for a file:
$ git check-attr crlf diff myAttr -- org/example/MyClass.java
org/example/MyClass.java: crlf: unset
org/example/MyClass.java: diff: java
org/example/MyClass.java: myAttr: set
- Listing all attributes for a file:
$ git check-attr --all -- org/example/MyClass.java
org/example/MyClass.java: diff: java
org/example/MyClass.java: myAttr: set
- Listing an attribute for multiple files:
$ git check-attr myAttr -- org/example/MyClass.java org/example/NoMyAttr.java
org/example/MyClass.java: myAttr: set
org/example/NoMyAttr.java: myAttr: unspecified
- Not all values are equally unambiguous:
$ git check-attr caveat README
README: caveat: unspecified
π«Ά SEE ALSO π«Ά
gitattributes(5) β go read it, bestie. π¦
π GIT π
Part of the git(1) suite. iconic behavior, honestly.
β¨ this page is Git 2.56.0, dated 2026-09-27 β the GIT-CHECK-ATTR(1) manual page. bye bestie, go check those attrs π
π
π¦ where this page comes from
- arch rolling: git 2.56.0-1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms