Code change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.71.0 OS Version: MacOS 12.5.1 Steps to Reproduce: I'm not entirely sure how to repro this as the error doesn't really indicate the cause. What happens is, when I click "Sync" on Git, I get this modal warning: <img width="276" alt="image" src="https://user-"And the Git log itself doesn't immediately have any signs of failure, no results for searching the word "error". It seems that some Git command failed internally but I'm not sure why the failure reason isn't part of this modal window. If the reason is in the Git log (which currently is quite large as I've had vscode open all day) then it's not immediately obvious which command caused this error. Shouldn't the error message be part of the alert dialogue that appeared?
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.71.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
that does seem like a bug. If you are still able to reproduce the problem, could you please click on the "Show Command Output" button and share that? Thank you very much in advance!
yeah it turns out I had some difference in tags between my local and the remote - I got an error about "clobbering" tags (?) overwriting I guess? when git-pulling with --tags via the terminal. I think what happened is myself and another team member ran our release script and generated the same tag on two different commits.
thanks for the update. If you are able to come up with a set of repro steps that yowl be very helpful. Thanks!
Managed to reproduce. This was done in a repository where I was a few commits behind the remote copy. I tagged the current commit which was with then pushed --tags pulled down the new commits from remote, my local is now I deleted the tag called which pointed to I a new tag, also called on now there's a tag called where the remote points to a different commit to my local, git cannot fix this itself I run and I see the error message: Now when you click ! in vscode, it runs in the background, and internally it hits this exact same error but the alert box that opens does not contain the actual error message: ! One observation: on Windows I've got this "Show command output" which when I click, it opens an editor with the full log so that's useful at least! On mac this didn't work, so maybe that's the actual bug here. Full log for reference:
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
Verification steps: Use the repo steps from In case of a conflict in tags, we now display a dialog listing the tags that are conflicted <img width="273" alt="image" src="https://user-"* Click on "Replace Local Tag(s)" and confirm that you are able to successfully sync
/verified Amazing, awesome work!

Related discussion:
text: return config.get<boolean>('optimisticUpdate') === true; } <ins> private async handleTagConflict(remote: string | undefined, raw: string): Promise<boolean> { // Ensure there is a remote remote = remote ?? this.HEAD?.upstream?.remote; if (!remote) { throw new Error('Unable to resolve tag conflict due to missing remote.'); } // Extract tag names from message const tags: string[] = []; for (const match of raw.matchAll(/^ ! [rejected]s+([^s]+)s+->s+([^s]+)s+(would clobber existing tag)$/gm)) { if (match.length === 3) { tags.push(match[1]); } } if (tags.length === 0) { throw new Error(`Unable to extract tag names from error message: ${raw}`); } // Notification const replaceLocalTags = l10n.t('Replace Local Tag(s)'); const message = l10n.t('Unable to pull from remote repository due to conflicting tag(s): {0}. Would you like to resolve the conflict by replacing the local tag(s)?', tags.join(', ')); const choice = await window.showErrorMessage(message, { modal: true }, replaceLocalTags); if (choice !== replaceLocalTags) { return false; } // Force fetch tags await this.repository.fetchTags({ remote, tags, force: true }); return true; } </ins> public isBranchProtected(name: string = this.HEAD?.name ?? ''): boolean { return this.isBranchProtectedMatcher ? this.isBranchProtectedMatcher(name) : false; }