From: Jeff King Date: Thu, 24 Aug 2023 14:32:11 GMT Subject: Re: diff alias which used to work in version 2.27, failing from version 2.28 onwards Message-ID: <20230824143211.GA3108100@coredump.intra.peff.net> In-Reply-To: <31866645d2ac4cb1be17e35fae742cb2@cscs.ch> On Thu, Aug 24, 2023 at 10:19:18AM +0000, Reverdell Auriane wrote: > 14:38:45.275964 git.c:439 trace: built-in: git diff a2028e7b^..a2028e7b a2028e7b > [...] > Is that expected behavior? if yes, how is the right/clean way to > discard the command line argument of the alias? Yes, that's expected. Your alias was always a little broken by adding the extra argument, but "git diff" got a little more careful about its input in 8bfcb3a690 (git diff: improve range handling, 2020-06-12), which as part of v2.28. The usual way for manipulating arguments in a shell snippet is to make a function, like: [alias] dici = "!f() { git diff ${1:-HEAD}^..${1:-HEAD}; }; f" Then Git ends up running "f a2028e7b", and the shell does the rest. It's obviously a bit more verbose to write, but you're free to do even more manipulation (e.g., using the first non-option argument as the rev and taking the rest as options). All that said, there is a shorthand that may make your alias obsolete. From "git help revisions": ^-, e.g. HEAD^-, HEAD^-2 Equivalent to ^.., with = 1 if not given. So just: git diff a2028e7b^- does what you want. -Peff