这个问题在所有扩展都禁用时是否发生?:是
版本:1.62.3(用户设置)
提交:ccbaa2d
日期:2021-11-17T08:11:14.551Z
Electron:13.5.2
Chrome:91.0.4472.164
Node.js:14.16.0
V8:9.1.269.39-electron.0
OS:Windows_NT x64 10.0.19043
重现步骤:
- 克隆一个包含指向子模块仓库分支的子模块的仓库。
- 根据
main
强制重新创建基于git switch -C <branch name> origin/main
的分支。 - 进行更改并提交。
- 在源代码控制面板中点击“同步更改”按钮
预期结果:
显示一个对话框消息,包含"此操作将推送和拉取提交到和来自origin/<branch name>
",然后VS Code将提交推送到origin/<branch name>
。
实际结果:
显示一个对话框消息,包含"此操作将推送和拉取提交到和来自'origin/main'",然后VS Code将提交推送到origin/main
。
此外,底部工具栏中的当前分支指示器显示正确的分支,而“同步更改”按钮触发推送到另一个分支。
6条答案
按热度按时间3yhwsihp1#
相关:
8hhllhi22#
实际问题是你的分支是从
origin/main
分支分叉出来的。请验证:这是GitHub和GitLab的通常工作流程。
目前,默认的推送策略(
push.default
)是simple
,它只在本地分支(test
)和上游分支(origin/main
)具有相同名称时将它们推送到上游分支。但不知何故,vscode的行为更像是upstream
策略——在不检查它们的分支名称的情况下将本地分支推送到上游分支。相反,
current
策略将本地分支推送到与上游远程同名的分支(无论远程跟踪分支是什么)。解决方法
30byixjq3#
我也受到了这个问题的影响。不幸的是,@proletarius101提到的解决方法似乎不起作用。在我的情况下,我的分支是从上游分支
upstream/main
分叉出来的,我想推送到origin/my-branch
。为此,我已经设置了以下内容:branch.my-branch.remote
=upstream
branch.my-branch.merge
=main
(即,本地分支my-branch
跟踪upstream/main
)remote.pushDefault
=origin
branch.my-branch.pushRemote
=origin
push.default
=current
(即,更改应推送到origin/my-branch
)pull.rebase
=true
(即,my-branch
应通过rebase从upstream/main
更新)由于这些设置的共同影响,本地分支
my-branch
应基于上游仓库中最新的upstream/main
更改进行rebase,并应推送到我的fork中的origin/my-branch
(直到最终通过合并请求将其合并到我的fork中的upstream/main
)。这个设置在例如Magit和edamagit的vscode中运行良好。然而,“同步更改”按钮却希望同时拉取和推送到
upstream/main
,这对于这种工作流程是错误的。将分支设置为跟踪origin/my-branch
也是错误的,并且会使重新基于最新的上游更改变得更加麻烦。mctunoxg4#
它由@kris7t描述,在VScode insider上仍然是一个问题。
6yjfywim5#
我正在经历这个问题。请告诉我解决方法。
6gpjuf906#
仍在经历这个...
即使使用
push.default current