From: René Scharfe Date: Thu, 23 Apr 2026 21:36:39 GMT Subject: Re: Bug: Hierarchical Aliases no longer work in 2.54.0 Message-ID: In-Reply-To: On 4/23/26 8:19 PM, Grossfeld, Michael wrote: > Hello all! Seeing this issue on 2.54.0 and it didn't look like anyone had reported it yet. > >> What did you do before the bug happened? (Steps to reproduce your issue) > > Attempting to use the hierarchical alias "pull.sub", which was working in 2.53.0, is no longer working in 2.54.0. > It returns the following error: "git: 'pull.sub' is not a git command. See 'git --help'." > >> What did you expect to happen? (Expected behavior) > > The git alias should have firsted pulled, then updated submodules recursively. > >> What happened instead? (Actual behavior) > > It reports the following error: "git: 'pull.sub' is not a git command. See 'git --help'." > >> What's different between what you expected and what actually happened? > > git 2.53.0 to git 2.54.0. > >> Anything else you want to add: > > The alias was defined in my gitconfig as in 2.53.0, and remains this way: > > [alias "pull"] > sub = "!f() { git pull origin --recurse-submodules=no --ff-only; echo Updating Submodules...; git submodule update --recursive --jobs=16 --progress; }; f" Broken by ac1f12a9de4 (alias: support non-alphanumeric names via subsection syntax, 2026-02-18). Alias sections were not documented before. How did you discover them? I think the previous behavior can be brought back while keeping the new feature, except for aliases that end in ".command". > It was written via this command: > git config --global alias.pull.sub '!f() { git pull origin --recurse-submodules=no --ff-only -p; echo Updating Submodules...; git submodule update --recursive --jobs=16; }; f' > > Trying to do the following (with .command): > git config --global alias.pull.sub.command '!f() { git pull origin --recurse-submodules=no --ff-only -p; echo Updating Submodules...; git submodule update --recursive --jobs=16; }; f' > > Results in a section of the gitconfig that looks like this: > > [alias "pull.sub"] > command = "!f() { git pull origin --recurse-submodules=no --ff-only -p; echo Updating Submodules...; git submodule update --recursive --jobs=16; }; f" Which works, right? > [System Info] > git version: > git version 2.54.0.windows.1 > cpu: x86_64 > built from commit: 2b8a3ab140826ac423c2845ef81d4c6ac4f7bf3c > sizeof-long: 4 > sizeof-size_t: 8 > shell-path: D:/git-sdk-64-build-installers/usr/bin/sh > rust: disabled > feature: fsmonitor--daemon > gettext: enabled > libcurl: 8.19.0 > OpenSSL: OpenSSL 3.5.6 7 Apr 2026 > zlib: 1.3.2 > SHA-1: SHA1_DC > SHA-256: SHA256_BLK > default-ref-format: files > default-hash: sha1 > uname: Windows 10.0 26200 > compiler info: gnuc: 15.2 > libc info: no libc information available > $SHELL (typically, interactive shell): D:\develop\tools\Git\usr\bin\bash.exe > > Thanks for the help! > > Michael Grossfeld > AMD