void () { GitCompoundResult checkoutResult = new GitCompoundResult(myProject); GitCompoundResult deleteResult = new GitCompoundResult(myProject); for (GitRepository repository : getSuccessfulRepositories()) { Hash startHash = getHead(repository); GitCommandResult result = myGit.checkout(repository, myCurrentHeads.get(repository), null, true, false); checkoutResult.append(repository, result); if (result.success() && myNewBranch != null) { /* force delete is needed, because we create new branch from branch other that the current one e.g. being on master create newBranch from feature, then rollback => newBranch is not fully merged to master (although it is obviously fully merged to feature). */ deleteResult.append(repository, myGit.branchDelete(repository, myNewBranch, true)); } updateAndRefreshChangedVfs(repository, startHash); } if (!checkoutResult.totalSuccess() || !deleteResult.totalSuccess()) { @NlsContexts.NotificationContent StringBuilder message = new StringBuilder(); if (!checkoutResult.totalSuccess()) { message.append(GitBundle.message("checkout.operation.errors.during.checkout")); message.append(checkoutResult.getErrorOutputWithReposIndication()); } if (!deleteResult.totalSuccess()) { message.append(GitBundle.message("checkout.operation.errors.during.deleting", code(myNewBranch))); message.append(deleteResult.getErrorOutputWithReposIndication()); } VcsNotifier.getInstance(myProject).notifyError(CHECKOUT_ROLLBACK_ERROR, GitBundle.message("checkout.operation.error.during.rollback"), message.toString(), true); } }