Git VS代码:推送和发布之间有什么区别

Git VS代码:推送和发布之间有什么区别,git,visual-studio-code,Git,Visual Studio Code,在Visual Studio代码中的GIT选项卡上,有一个上下文菜单,其中包含以下项目: 同步 拉 拉动(释放) 推 ================== 发表 ================== “发布”按钮的作用是什么?来自: 如果没有配置上游分支,并且Git存储库设置了远程,则会启用发布操作。这将允许您将当前分支发布到远程服务器 因此,我希望如果您配置了上游分支,您将能够推送(即直接推送到配置的上游分支),如果您没有配置上游分支,则只允许发布(即选择要推送的远程和分支)检查Vi

在Visual Studio代码中的GIT选项卡上,有一个上下文菜单,其中包含以下项目:

  • 同步
  • 拉动(释放)
==================

  • 发表
==================

“发布”按钮的作用是什么?

来自:

如果没有配置上游分支,并且Git存储库设置了远程,则会启用发布操作。这将允许您将当前分支发布到远程服务器


因此,我希望如果您配置了上游分支,您将能够推送(即直接推送到配置的上游分支),如果您没有配置上游分支,则只允许发布(即选择要推送的远程和分支)检查Visual Studio代码的源代码后

推 将当前分支推至默认分支远程上游

public run(context?: any):Promise {
    return this.gitService.push() // ... removed for brevity        
}
在以下情况下激活: 上游有和最近的推/拉(前面)

发表 允许您选择要推送到的遥控器

public run(context?: any):Promise {
        const model = this.gitService.getModel();
        const remotes = model.getRemotes();
        const branchName = model.getHEAD().name;
        let promise: TPromise<string>;

        if (remotes.length === 1) {
            const remoteName = remotes[0].name;
            promise = TPromise.as(result ? remoteName : null);
        } else {
            // open the option picker            
            promise = this.quickOpenService.pick(picks, { placeHolder })
                .then(pick => pick && pick.label);
        }

        return promise
            .then(remote => remote && this.gitService.push(remote, branchName, { setUpstream: true }))            
}

Publish将分支推送到远程,并设置本地分支以跟踪远程分支

推送只推送,不设置上游跟踪信息(即:
branch..remote
branch..merge
配置)

如果没有上游分支,并且
push.default=simple
(git默认值),push将引发一个对话框,建议发布

public run(context?: any):Promise {
        const model = this.gitService.getModel();
        const remotes = model.getRemotes();
        const branchName = model.getHEAD().name;
        let promise: TPromise<string>;

        if (remotes.length === 1) {
            const remoteName = remotes[0].name;
            promise = TPromise.as(result ? remoteName : null);
        } else {
            // open the option picker            
            promise = this.quickOpenService.pick(picks, { placeHolder })
                .then(pick => pick && pick.label);
        }

        return promise
            .then(remote => remote && this.gitService.push(remote, branchName, { setUpstream: true }))            
}
if (model.getRemotes().length === 0) {
    return false;
}

if (!HEAD || !HEAD.name || HEAD.upstream) {
    return false;
}