Subject: Re: rebase update-refs can delete ref branch

From: Victoria Dye <[email-masked]>
Date: Thu, 8 Dec 2022 23:50:36 -0800

Hi Eric!

> [I am presented]:
> pick 2dd4408 commit 2 # empty
> update-ref other-branch
> 
> pick 39f626e commit 3 # empty
> 
> [I deleted first two lines and submitted]:
> pick 39f626e commit 3 # empty
> 
> Successfully rebased and updated refs/heads/working-branch.
> Updated the following refs with --update-refs:
> refs/heads/other-branch
> $ git rev-parse other-branch
> other-branch
> fatal: ambiguous argument 'other-branch': unknown revision or path not
> in the working tree.
> Use '--' to separate paths from revisions, like this:
> 'git <command> [<revision>...] -- [<file>...]'

I believe this is the same bug as one reported back in October [1], where
deleting all 'update-ref' lines from the 'rebase-todo' inadvertently causes
the rebase to delete those refs. The bug was fixed in 44da9e0841 (rebase
--update-refs: avoid unintended ref deletion, 2022-11-07), so you shouldn't
see the issue anymore in Git that's built from newer revisions (e.g., the
latest pre-release v2.39.0-rc2 or the upcoming final v2.39.0).

I hope that helps!
- Victoria

[1] https://lore.kernel.org/git/[email-masked]/

> [System Info]
> git version:
> git version 2.38.0
> cpu: aarch64
> built from commit: 3dcec76d9df911ed8321007b1d197c1a206dc164
> sizeof-long: 8
> sizeof-size_t: 8
> shell-path: /bin/sh
> uname: Linux 5.16.13-generic #2 SMP Fri Mar 11 12:48:38 UTC 2022 aarch64
> compiler info: gnuc: 10.2
> libc info: glibc: 2.17
> $SHELL (typically, interactive shell): /bin/bash
> 
> 
> [Enabled Hooks]
> pre-commit