如何在VS代码中创建带有远程跟踪的本地git分支

如何在VS代码中创建带有远程跟踪的本地git分支,git,visual-studio-code,Git,Visual Studio Code,当从私有git服务器提取时,每当我在VS代码中创建分支时,它都不会跟踪上游分支。git输出显示它正在运行 git checkout -q -b NewBranchLocal --no-track origin/NewBranch 如果我使用“>Git:Checkout to…”或“>Git:createbranchfrom…”命令 是否有从git服务器中提取这些内容的最佳实践?如何在VS代码中使用git扩展创建源分支的本地版本并将其绑定到该上游分支 从我在VS代码的源代码中看到的情况来看,似乎

当从私有git服务器提取时,每当我在VS代码中创建分支时,它都不会跟踪上游分支。git输出显示它正在运行

git checkout -q -b NewBranchLocal --no-track origin/NewBranch
如果我使用“>Git:Checkout to…”或“>Git:createbranchfrom…”命令

是否有从git服务器中提取这些内容的最佳实践?如何在VS代码中使用git扩展创建源分支的本地版本并将其绑定到该上游分支

从我在VS代码的源代码中看到的情况来看,似乎只有在您正在创建的分支被签出时才应该显示--no轨迹,但是我看不到可以创建分支而不签出它的选项。查看vscode master/extensions/git/src文件夹,git.ts(第1238行)显示

异步分支(名称:string,签出:boolean,ref?:string):Promise{ 常量args=checkout?['checkout','-q','-b',name','-no-track']:['branch','-q',name]; 如果(参考){ 参数推送(参考); } 等待此消息。运行(args); } 唯一的参考是repository.ts(第979行):

异步分支(名称:string,\u签出:boolean,\u ref?:string):承诺{
等待这个。运行(Operation.Branch,()=>this.repository.Branch(name,_checkout,_ref));
}
这在commands.ts文件(第1563行)中调用

private async\u分支(存储库:存储库,defaultName?:字符串,from=false):承诺{
const branchName=等待此消息。promptForBranchName(默认名称);
如果(!branchName){
返回;
}
让target='HEAD';
如果(从){
const picks=[新建标题项(存储库),…创建签出项(存储库)];
const placeHolder=localize('select a ref to create new branch from','select a ref to create the \'{0}\'branch from',branchName);
const choice=wait window.showQuickPick(picks,{placeHolder});
如果(!选择){
返回;
}
target=choice.label;
}
等待repository.branch(branchName、true、target);
}
因此,没有能力不签出该分支,也没有机会将新的本地分支链接到源代码

我在vscode主项目中找不到任何其他引用,因此我很难确定下一步该去哪里查看。

根据Git:Checkout to。。。命令将显示分支的列表。如果选择远程分支,它将创建本地分支并将其设置为跟踪远程分支。我刚刚用VS代码1.47.3测试了它,它创建了带有跟踪的本地分支。也许他们在你把问题贴在这里后就解决了

    async branch(name: string, checkout: boolean, ref?: string): Promise<void> {
        const args = checkout ? ['checkout', '-q', '-b', name, '--no-track'] : ['branch', '-q', name];

        if (ref) {
            args.push(ref);
        }

        await this.run(args);
    }
    async branch(name: string, _checkout: boolean, _ref?: string): Promise<void> {
        await this.run(Operation.Branch, () => this.repository.branch(name, _checkout, _ref));
    }
    private async _branch(repository: Repository, defaultName?: string, from = false): Promise<void> {
        const branchName = await this.promptForBranchName(defaultName);

        if (!branchName) {
            return;
        }

        let target = 'HEAD';

        if (from) {
            const picks = [new HEADItem(repository), ...createCheckoutItems(repository)];
            const placeHolder = localize('select a ref to create a new branch from', 'Select a ref to create the \'{0}\' branch from', branchName);
            const choice = await window.showQuickPick(picks, { placeHolder });

            if (!choice) {
                return;
            }

            target = choice.label;
        }

        await repository.branch(branchName, true, target);
    }