mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-10-06 05:57:38 -04:00
To push a branch other than the checked-out one, lazygit has to name the remote and the remote branch in the push command; a bare `git push` only works for the current branch. The upstream isn't always the right destination. In a triangular workflow the branch is pushed to a different remote than it pulls from, and with push.default set to "current" it goes to a branch of the same name whatever the upstream is called. Read the destination from git instead of working it out from the config. The %(push) field of for-each-ref names the remote-tracking ref that a push would update, taking push.default, remote.pushDefault and branch.<name>.pushRemote into account. It is also the ref that the push:track counts are computed against, so the force-push detection and the destination agree. The field is available since git 2.5, well before the oldest version lazygit supports. Nothing uses the new fields yet. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>