In git 2.48.1, the `git update-ref` subcommand no longer correctly updates the reflog in some cases. Specifically, it appears that the `old_oid` field will not be updated when modifying a branch referenced by another symbolic ref (e.g. HEAD). This doesn't break the `git reflog` subcommand, but does break references like `HEAD@{1}`, which appear to read the `old_oid` field. STR (in a fresh directory): ``` git init -b main git commit --allow-empty -m "A" git commit --allow-empty -m "B" git update-ref -m "reason" refs/heads/main HEAD~ HEAD ``` Expected Result: ``` $ git rev-parse HEAD@{1} 70d9116663eee9f01065c3a6d8984b1dea661f20 $ cat .git/logs/HEAD 0000000000000000000000000000000000000000 17dd31aaf89190a36b8d04136a1a0f83fb37da4c AUTHOR <EMAIL> TIME commit (initial): A 17dd31aaf89190a36b8d04136a1a0f83fb37da4c 70d9116663eee9f01065c3a6d8984b1dea661f20 AUTHOR <EMAIL> TIME commit: B 70d9116663eee9f01065c3a6d8984b1dea661f20 17dd31aaf89190a36b8d04136a1a0f83fb37da4c AUTHOR <EMAIL> TIME reason ``` The `old_oid` field for the reflog entry added by `git update-ref` is present, and correctly initialized. This was the case prior to git 2.48. Actual Result: ``` $ git rev-parse HEAD@{1} warning: log for ref HEAD unexpectedly ended on TIME 17dd31aaf89190a36b8d04136a1a0f83fb37da4c $ cat .git/logs/HEAD 0000000000000000000000000000000000000000 17dd31aaf89190a36b8d04136a1a0f83fb37da4c AUTHOR <EMAIL> TIME commit (initial): A 17dd31aaf89190a36b8d04136a1a0f83fb37da4c 70d9116663eee9f01065c3a6d8984b1dea661f20 AUTHOR <EMAIL> TIME commit: B 0000000000000000000000000000000000000000 17dd31aaf89190a36b8d04136a1a0f83fb37da4c AUTHOR <EMAIL> TIME reason ``` The `old_oid` field is empty (all zeroes). This is only the case in derived reflogs (in this case .git/logs/HEAD). The reflog for refs/heads/main appears to be updated correctly.