void (@NotNull AnActionEvent e) { GitRepository repository = myRepositories.get(0); GitRemoteBranch remoteBranch = Objects.requireNonNull(repository.getBranches().findRemoteBranch(myBranchName)); String suggestedLocalName = remoteBranch.getNameForRemoteOperations(); GitNewBranchOptions newBranchOptions = new GitNewBranchOptions(suggestedLocalName, false, true); // can have remote conflict if git-svn is used - suggested local name will be equal to selected remote if (BRANCH_NAME_HASHING_STRATEGY.equals(myBranchName, suggestedLocalName)) { newBranchOptions = askBranchName(suggestedLocalName); if (newBranchOptions == null) return; } String localName = newBranchOptions.getName(); Map<GitRepository, GitLocalBranch> conflictingLocalBranches = map2MapNotNull(myRepositories, r -> { GitLocalBranch local = r.getBranches().findLocalBranch(localName); return local != null ? Pair.create(r, local) : null; }); if (hasTrackingConflicts(conflictingLocalBranches, myBranchName)) { newBranchOptions = askBranchName(localName); if (newBranchOptions == null) return; } GitCheckoutAndRebaseRemoteBranchWorkflow workflow = new GitCheckoutAndRebaseRemoteBranchWorkflow(myProject, myRepositories); workflow.execute(remoteBranch.getNameForLocalOperations(), newBranchOptions); }