Sebastian Schuberth <sschuberth@xxxxxxxxx> writes: > Hi, > > I'd like to check whether my working tree exactly matches the tree of a given commit. That is, there should not be any untracked, staged or modified files (including ignored files). > > Currently, I'm doing this in two steps: > > - check for success and empty output of "git status --ignored --porcelain" > - check that the output of "git rev-parse HEAD" matches the given commit > > While this works, it feels sub-optimal. Is there a better / smarter way? I do not think so; you want three things to match and you have a way to compare two things at a time. By the way, I think your second check should compare rev-parse HEAD^{tree} $that_commit^{tree} as you are checking if the tree exactly matches.