0

0

如何使用 go-git 将特定分支推送到远程

WBOY

WBOY

发布时间:2024-02-09 09:12:20

|

1125人浏览过

|

来源于stackoverflow

转载

如何使用 go-git 将特定分支推送到远程

php小编草莓为大家介绍如何使用 go-git 将特定分支推送到远程。go-git 是一个基于 Go 语言的开源库,提供了一种简便的方式来操作 Git 仓库。推送特定分支到远程仓库可以让团队成员共享最新的代码,并保持代码库的更新。在本文中,我们将详细介绍使用 go-git 的步骤,帮助大家快速掌握这个实用工具。无论您是 Git 初学者还是有经验的开发者,本文都将为您提供有用的指导。让我们一起来学习如何使用 go-git 推送特定分支到远程仓库吧!

问题内容

使用 go-git 将特定单个本地分支推送到特定远程的规范方法是什么?

我签出并使用 go-git 打开本地存储库

repo, err := git.plainopen("my-repo")

该存储库具有默认的 origin 远程。

我正在尝试将此存储库的内容同步到另一个远程 mirror,因此我添加了远程

repo.createremote(&config.remoteconfig{
                name: "mirror",
                urls: []string{"[email protected]:foo/mirror.git"},
            })

首先,我从 origin 获取存储库内容

err = remote.fetch(&git.fetchoptions{
                remotename: "origin",
                tags:       git.alltags,
            })

...并使用 remote.list() 发现所有感兴趣的分支和标签

AGI-Eval评测社区
AGI-Eval评测社区

AI大模型评测社区

下载

最后一步是将分支推送到 mirror,同时根据映射重写分支名称。例如。 refs/remotes/origin/master 签出为 refs/heads/master 应作为 main 推送到 mirror 远程。因此,我正在迭代分支并尝试将它们一一推送:

refSpec := config.RefSpec(fmt.Sprintf(
                "+%s:refs/remotes/mirror/%s",
                localBranch.Name().String(),
                // map branch names, e.g. master -> main
                mapBranch(remoteBranch.Name().Short()),
            ))
err = repo.Push(&git.PushOptions{
                RemoteName: "mirror",
                Force:      true,
                RefSpecs:   []config.RefSpec{refSpec},
                Atomic:     true,
            })

但这会导致 git.noerralreadyuptodate 并且 mirror 远程上没有任何反应。

解决方法

当将单个分支推送到远程时,refspec 不应采用 +refs/heads/localbranchname:refs/remotes/remotename/remotebranchname 格式,例如此处

// refspec is a mapping from local branches to remote references.
...
// eg.: "+refs/heads/*:refs/remotes/origin/*"
//
// https://git-scm.com/book/en/v2/git-internals-the-refspec
type refspec string

但是作为

"+refs/heads/localbranchname:refs/heads/remotebranchname"

相反。请参阅示例

    refSpecStr := fmt.Sprintf(
        "+%s:refs/heads/%s",
        localBranch.Name().String(),
        mapBranch(remoteBranch.Name().Short()),
    )
    refSpec := config.RefSpec(refSpecStr)
    log.Infof("Pushing %s", refSpec)
    err = repo.Push(&git.PushOptions{
        RemoteName: "mirror",
        Force:      true,
        RefSpecs:   []config.RefSpec{refSpec},
        Atomic:     true,
    })

相关标签:

git

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

724

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

554

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

267

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

558

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

520

2024.04.09

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

386

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

135

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

233

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

8

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号