From: Norbert Kiesel Date: Thu, 05 Mar 2026 23:36:55 GMT Subject: Re: Feature request: support listing worktrees sorted by creation time Message-ID: In-Reply-To: Wrote a Zsh script that uses the "directory create time" but when a worktree is moved then that will be updated. So would still like to have `git worktree add` store the current timestamp somewhere. ```zsh #!/bin/zsh # List git worktrees with creation timestamps, sorted oldest to newest wt_path="" branch="" typeset -a ts_arr wt_arr br_arr flush() { [[ -z $wt_path ]] && return local epoch=$(stat -f '%B' "$wt_path" 2>/dev/null) ts_arr+=("${epoch:-0}") wt_arr+=("$wt_path") br_arr+=("${branch:-(detached)}") wt_path="" branch="" } while IFS= read -r line; do case $line in worktree\ *) flush; wt_path=${line#worktree } ;; branch\ *) branch=${line#branch refs/heads/} ;; detached) branch="(detached)" ;; "") flush ;; esac done < <(git worktree list --porcelain) flush # Find max branch width for column alignment integer max_br=0 for br in "${br_arr[@]}"; do (( ${#br} > max_br )) && max_br=${#br} done # Print first entry (main worktree) always first printf "%s %-${max_br}s %s\n" "$(date -r "${ts_arr[1]}" +"%Y-%m-%d")" "${br_arr[1]}" "${wt_arr[1]}" # Collect remaining entries prefixed with epoch for numeric sort typeset -a rest_lines for (( i=2; i<=${#ts_arr}; i++ )); do rest_lines+=("${ts_arr[$i]} $(printf "%-${max_br}s %s" "${br_arr[$i]}" "${wt_arr[$i]}")") done # Sort numerically by epoch, then replace epoch with formatted date (( ${#rest_lines} > 0 )) && print -l "${(on)rest_lines[@]}" | while IFS= read -r line; do epoch=${line%% *} printf "%s %s\n" "$(date -r "$epoch" +"%Y-%m-%d")" "${line#* }" done ``` On Thu, Mar 5, 2026 at 7:50 AM Junio C Hamano wrote: > > Norbert Kiesel writes: > > > I have multiple repos with more than 20 worktrees, and sometimes > > forget the name of a recently added worktree. Therefore it would > > really be nice if I could use something like ‘git worktree list > > —created’ to list them by their creation timestamp. Is that something > > that makes sense to you as well? I could also create a pull request > > for this if you would like it. > > I do not think we have any _record_ of when each of these worktrees > was created, so this is not a realistic request. > > The output from "git worktree list" may be more than 20 lines, but > isn't your terminal taller than 20 lines ;-)? > > Since very early days of Git, we have created .git/description file > that is not used very much (I think it is shown in gitweb). Perhaps > worktree should have an equivalent in per-worktree part of their > .git/ directory and "git worktree list --verbose" can use its > contents in addition to the additional pieces information it already > shows, or something like that, perhaps?