From 621100b355a77a05f19181d1fc8490f6559a3ba1 Mon Sep 17 00:00:00 2001 From: ManyaS-Git Date: Wed, 22 Jul 2026 10:45:12 +0530 Subject: [PATCH] Fix: Checked out existing local branch when checking out remote branch --- src/Files.App/Services/Git/LibGit2Service.cs | 8 +++++++- src/Files.App/Utils/Git/GitHelpers.cs | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Files.App/Services/Git/LibGit2Service.cs b/src/Files.App/Services/Git/LibGit2Service.cs index 625812bb877f..75984daa7a79 100644 --- a/src/Files.App/Services/Git/LibGit2Service.cs +++ b/src/Files.App/Services/Git/LibGit2Service.cs @@ -473,9 +473,15 @@ private static void CheckoutRemoteBranch(Repository repository, Branch branch) { var uniqueName = branch.FriendlyName.Substring(END_OF_ORIGIN_PREFIX); - // TODO: This is a temp fix to avoid an issue where Files would create many branches in a loop if (repository.Branches.Any(b => !b.IsRemote && b.FriendlyName == uniqueName)) + { + var localBranch = repository.Branches[uniqueName]; + if (repository.Head.FriendlyName != localBranch.FriendlyName) + { + LibGit2Sharp.Commands.Checkout(repository, localBranch); + } return; + } //var discriminator = 0; //while (repository.Branches.Any(b => !b.IsRemote && b.FriendlyName == uniqueName)) diff --git a/src/Files.App/Utils/Git/GitHelpers.cs b/src/Files.App/Utils/Git/GitHelpers.cs index f6eb2a1ca182..af3f12454013 100644 --- a/src/Files.App/Utils/Git/GitHelpers.cs +++ b/src/Files.App/Utils/Git/GitHelpers.cs @@ -535,9 +535,15 @@ private static void CheckoutRemoteBranch(Repository repository, Branch branch) { var uniqueName = branch.FriendlyName.Substring(END_OF_ORIGIN_PREFIX); - // TODO: This is a temp fix to avoid an issue where Files would create many branches in a loop if (repository.Branches.Any(b => !b.IsRemote && b.FriendlyName == uniqueName)) + { + var localBranch = repository.Branches[uniqueName]; + if (repository.Head.FriendlyName != localBranch.FriendlyName) + { + LibGit2Sharp.Commands.Checkout(repository, localBranch); + } return; + } //var discriminator = 0; //while (repository.Branches.Any(b => !b.IsRemote && b.FriendlyName == uniqueName))