我有一个包含3个分支的仓库,名为1,2,3,以及一个公共GitHub仓库名为A,一个私有GitHub仓库名为B,一个GitLab仓库名为C。
分支3是私有的。
所以我希望VSCode在我点击按钮时为我做这件事。
- 将分支1、2推到A、B、C
- 将分支3推到B、C
GitHub marketplace提供了很多同步操作,但是.workflow
文件夹也会同步到公共存储库,或者如果我排除了正在执行的文件夹,来自不同存储库的提交SHA将不匹配。
它通过git remote set-url --add --push
工作得很好,除了分支3也被推。
我想git pre-push钩子可能会起作用,但是如何区分哪个分支是当前分支,如果我使用git push --all
会发生什么?
2条答案
按热度按时间voj3qocg1#
它通过
git remote set-url --add --push
工作正常,除了分支3也被推送不应该这样,因为你可以列出你想为每个分支推送的仓库。
例如,假设3个仓库:
您可以配置每个分支:
当一个分支被 checkout 时的推送应该将该分支推送到正确的存储库。
但是,VSCode中的“
Synchronize Changes
”按钮和“Git: Push
”命令仅推送 current 分支。您可能需要创建一个自定义任务来实现您想要的(一次推送所有三个分支)
Tasks: Open User Tasks
”,然后按Enter键这样,您就有了一个“
push-all-branches
”新命令。请注意,您不能直接将自定义任务与Visual Studio Code中的“
Synchronize Changes
”按钮相关联,因为它是硬编码的,以执行“Git: Sync
”命令,该命令仅为 current 分支获取和推送更改。不过,您可以创建一个自定义键盘快捷键来快速运行“push-all-branches”任务。
q43xntqr2#
我的
.git/config
在执行VonC提供的命令后的内容。当我 checkout 一个分支并运行
git push
时,我得到了这样的错误。我不知道为什么会这样。但这将我引导到文件
.git/config
。在深入研究之后,我将.git/config
修改为:这对我很有效。
git branch -avv
的P.S.命令结果