Change:
We have the ability to select which branch to push to in the source control, could we please have a pull from option? To target specific branches. Unless it exists already? I have only recently started using VS Code and i love it!
This is an easy contribution, care to submit a PR? PS: You currently have the ability to select which remote to push to, not which branch.
I'll take on this. Is it correct that branch names are not stored anywhere? I've checked in and cannot find anywhere they could be stored. If there is nothing, I'll just take a user input using showInputBox.
I created a pull request for this: Please take a look when you have the chance.
merge conflict is fixed.
Merging with

Discussion:
"category": "Git" }, { <ins> "command": "git.pullFrom", "title": "%command.pullFrom%", "category": "Git" }, { </ins> "command": "git.push", "title": "%command.push%", "category": "Git"

"when": "config.git.enabled && scmProvider == git && gitState == idle" }, { <ins> "command": "git.pullFrom", "when": "config.git.enabled && scmProvider == git && gitState == idle" }, { </ins> "command": "git.push", "when": "config.git.enabled && scmProvider == git && gitState == idle" },

"when": "config.git.enabled && scmProvider == git && gitState == idle" }, { <ins> "command": "git.pullFrom", "group": "1_sync", "when": "config.git.enabled && scmProvider == git && gitState == idle" }, { </ins> "command": "git.push", "group": "1_sync", "when": "config.git.enabled && scmProvider == git && gitState == idle"

"command.branch": "Create Branch...", "command.pull": "Pull", "command.pullRebase": "Pull (Rebase)", <ins> "command.pullFrom": "Pull from...", </ins> "command.push": "Push", "command.pushTo": "Push to...", "command.sync": "Sync",

await this.model.pull(true); } <ins> @command('git.pullFrom') async pullFrom(): Promise<void> { const remotes = this.model.remotes; if (remotes.length === 0) { window.showWarningMessage(localize('no remotes to pull', "Your repository has no remotes configured to pull from.")); return; } const picks = remotes.map(r => ({ label: r.name, description: r.url })); const placeHolder = localize('pick remote pull', "Pick a remote to pull from"); const pickRemote = await window.showQuickPick(picks, { placeHolder }); const pickBranch = await window.showInputBox({ prompt: localize('pick pull branch', "Type a branch to pull"), ignoreFocusOut: true }); if (!pickRemote || !pickBranch) { return; } this.model.pull(false, pickRemote.label, pickBranch); } </ins> @command('git.push') async push(): Promise<void> { const remotes = this.model.remotes;

dispose(): void { this.disposables.forEach(d => d.dispose()); } <del> } </del>  No newline at end of file <ins> } </ins>

return GitErrorCodes.RepositoryNotFound; } else if (/unable to access/.test(stderr)) { return GitErrorCodes.CantAccessRemote; <ins> } else if (/Couldn't find remote ref/.test(stderr)) { return GitErrorCodes.CantAccessRemote; </ins> } return void 0;

} } <del> async pull(rebase?: boolean): Promise<void> { </del> <ins> async pull(rebase?: boolean, remote?: string, branch?: string): Promise<void> { </ins> const args = ['pull']; if (rebase) { args.push('-r'); } <ins> if (remote && branch) { args.push(remote); args.push(branch); } </ins> try { await this.run(args); } catch (err) {

} } <del> async pull(rebase?: boolean): Promise<void> { await this.run(Operation.Pull, () => this.repository.pull(rebase)); </del> <ins> async pull(rebase?: boolean, remote?: string, branch?: string): Promise<void> { await this.run(Operation.Pull, () => this.repository.pull(rebase, remote, branch)); </ins> } async push(remote?: string, name?: string, options?: PushOptions): Promise<void> {