From be3c1c27cbe1c66eb39f46fd48ca018bdf21bca5 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 May 2026 14:55:24 -0700 Subject: [PATCH] fix --- modules/git/cli_backend.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/git/cli_backend.go b/modules/git/cli_backend.go index 99989e5a..d458de2c 100644 --- a/modules/git/cli_backend.go +++ b/modules/git/cli_backend.go @@ -164,7 +164,20 @@ func (r *cliRepository) CreateTrackingBranch(localBranchName, remoteBranchName, } func (r *cliRepository) Checkout(ref ReferenceName) error { - _, err := r.git(nil, nil, "checkout", ref.String()) + args := []string{"checkout"} + switch { + case ref.IsBranch(): + // `git checkout refs/heads/` detaches HEAD, while the short branch + // name switches to the local branch as intended. + args = append(args, ref.Short()) + case ref.IsRemote(): + // Be explicit about detached HEAD when checking out a remote-tracking ref. + args = append(args, "--detach", ref.String()) + default: + args = append(args, ref.String()) + } + + _, err := r.git(nil, nil, args...) return err }