用go代码操作git

2023-05-16

git2go是一个用go代码操作git的库,需要依赖于第三方库libgit2

安装libgit2前,先安装相应的包:

yum -y install libssh2-devel

在 https://github.com/libgit2/libgit2 下载libgit2的代码进行安装:

mkdir build && cd build
cmake ..
cmake --build . --target install

然后下载git2go:

go get -d github.com/libgit2/git2go
-d表示只把代码下载不安装

进行git2go的目录,执行:

git checkout next
git submodule update --init # get libgit2
make install

下面是测试的代码:

package main

import (
    git "github.com/libgit2/git2go"
    "log"

)

func credentialsCallback(url string, username string, allowedTypes git.CredType) (git.ErrorCode, *git.Cred) {
    ret, cred := git.NewCredSshKey("git", "/var/www/testgo/git/id_rsa.pub", "/var/www/testgo/git/id_rsa", "")
    return git.ErrorCode(ret), &cred
}

func certificateCheckCallback(cert *git.Certificate, valid bool, hostname string) git.ErrorCode {
    return 0
}

func main() {

    cloneOptions := &git.CloneOptions{}
    cloneOptions.FetchOptions = &git.FetchOptions{
        RemoteCallbacks: git.RemoteCallbacks{
          CredentialsCallback:      credentialsCallback,
          CertificateCheckCallback: certificateCheckCallback,
        },
      }
    repo, err := git.Clone("git@github.com:test/test.git", "/tmp/code", cloneOptions)
            if err != nil {
                    log.Panic(err)
            }
    log.Print(repo)
}

[文章作者]曾健生

[作者邮箱]h6k65@126.com

[作者QQ]190678908

[博客]  http://blog.csdn.net/newjueqi

http://blog.sina.com.cn/h6k65




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用go代码操作git 的相关文章

  • Eclipse Git 关键字扩展

    每次我检查 git hub 服务器的源代码时 我都需要更新源代码修订关键字 version date 等 你可能知道 Git 中的主要问题是你无法使用以下命令修改文件 提交后有关提交的信息 因为 Git 首先对文件进行校验 基本上我想要实现
  • Gerrit 和 Active Directory

    我正在尝试设置 Gerrit 以使用我们的公司 Active Directory 进行身份验证 我知道很多人都设法让它发挥作用 但它对我来说不起作用 如果我运行一个ldapsearch命令如下我得到了正确的结果 所以我知道我的搜索字符串是正
  • git 推送到 github 失败并显示“错误:pack-objects 因信号 967 死亡”

    我触发了这个命令 git push origin master 我得到这个结果 Counting objects 15626 done Delta compression using up to 4 threads error pack o
  • 如何使用 git 比较不​​在存储库中的两个文件

    我想比较两个不在任何 git 存储库中的 css 文件 git中有这样的功能吗 git的 diff 比标准 Unix 更实用diff 我经常想这样做 并且由于这个问题在谷歌上排名很高 所以我希望这个答案出现 这个问题 如何使用git dif
  • Git:如何修改服务器的提交?

    我已经在 EC2 上的 git 服务器上推送了一些提交 而不是在 github 上 如何修改 git 服务器上的这些提交 操作就像 删除提交 例如变基 更改提交消息 是否可以 非常感谢 你几乎可以通过用力推动来完成所有事情 将您的本地树更改
  • 在我的例子中,GIT 添加恢复(保留更改)

    在我对文件进行更改之后 我用git add FILE NAME 然后 我想将其恢复为未添加但与此同时保留更改 这个怎么做 git reset FILE NAME会做的 See the git reset manual https git s
  • Gitolite git 克隆错误

    我正在尝试在我的服务器 Macos 服务器 上设置 gitolite 我按照此处找到的安装文档中的说明进行操作 http sitaramc github com gitolite doc 1 INSTALL html http sitara
  • Git checkout 不会丢弃我的更改

    我在 Windows XP 上使用 git 1 7 1 和 cygwin 这个问题可以通过例子得到最好的说明 git status On branch master Changed but not updated use git add
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • git push --force-with-lease 总是安全吗?

    我一直遵循的规则是 一旦 git 历史记录被推送到远程存储库 就不再修改它 但我想知道交互式变基到推送 force with lease 是否绕过了这条规则 如果强制租约成功 对其他用户来说是否完全安全 或者此策略有任何注意事项吗 预先感谢
  • 仅使用 git 存储未暂存的更改(不是 --keep-index)

    首先 我确实知道 keep index 这不是我想要的 因为它仍然隐藏着all更改 但将暂存的更改保留在工作树中 如果可能的话 我只想存储未暂存的文件 而无需再次添加所有更改git stash patch 如果您想存储索引 已暂存的内容 和
  • 在git的远程存储库上创建私有分支

    我想在我们公司的 git 上构建特定的流程 开发人员在他的本地计算机上创建一个分支并在那里提交一些文件 dev 将此分支推送到远程仓库 其他开发者无法访问该分支 经过几轮推动开发人员决定发布他的更改 将他的私人分支合并到公共分支 推动该公共
  • 无法在 Windows 10 上运行 Python 3.7“权限被拒绝”

    当尝试使用 Git Bash 在 Windows 10 上运行 Python 3 7 时 出现以下错误 python version bash c Users Name AppData Local Microsoft WindowsApps
  • Git:文件“已更改但未更新”

    已更改但未更新 是什么意思 这些文件位于 git 中 它们已被修改 但是当我运行 git status 时 这些更改显示在 已更改但未更新 而不是 要提交的更改 下 On branch master Changes to be commit
  • 如何从暂存区删除单个文件(撤消 git add)?

    情况 我有一个 Git 存储库 其中文件已在索引中 我对几个文件进行了更改 打开 Git 并使用 git add 将这些文件添加到我的暂存区域 问题 如何从暂存区域中删除这些文件之一 但不将其从索引中删除或撤消对文件本身的更改 如果我正确理
  • 如何应用 .diff 文件

    我有一个 diff 类型文件 看起来像爆炸了 diff git a res User lua b res User lua index db8c2cc 4d2af0f 100644 a res User lua b res User lua
  • 如何存储和计算版本控制历史记录?

    考虑这个简单的 python 代码 它演示了一个非常简单的字典版本控制设计 def build current history current for action key value in history assert action in
  • git Push Remote:警告:hooks.mailinglist 有多个值

    我刚刚从使用 gitosis 升级到 gitolite 电子邮件通知适用于所有存储库 但对于 gitolite admin 存储库 我在推送时收到此警告 推送很好 git push remote warning hooks announce
  • Git:repo 包含一个空目录 - 会发生什么?

    Git 跟踪文件 而不是目录 https stackoverflow com questions 5091017 和我们目前不能add空目录 https stackoverflow com questions 11600188 The 标准
  • “submodule”似乎是一个 git 命令,但我们无法执行它

    我已经克隆了一个 git 存储库 它是一个 Angular 7 和 NET Core 应用程序 项目中一切正常 但是当我尝试恢复 npm 包时 出现以下错误 Microsoft TeamFoundation Team Explorer Gi

随机推荐

  • 36.如何使用定时任务

    lt span style 61 34 font family Arial Helvetica sans serif background color rgb 255 255 255 34 gt 在app后台开发中 xff0c 经常需要执行
  • goroutine背后的系统知识

    http www sizeofvoid net goroutine under the hood o语言从诞生到普及已经三年了 xff0c 先行者大都是Web开发的背景 xff0c 也有了一些普及型的书籍 xff0c 可系统开发背景的人在学
  • 37.创业团队不是天堂

    在媒体的报导中 xff0c 创业公司一直都是充满情怀的 xff1a 宽松的工作环境 xff0c 不差的薪水 xff0c 不断高涨的融资额 xff0c 吃不完的零食和喝不完的饮料 xff0c 一群年轻人为了实现自己的梦想而一起奋斗 种种诱人的
  • java小程序(1)

    文章标题 java 小程序 xff08 1 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xff0c 敬请各位指出
  • java小程序(2)

    文章标题 java 小程序 xff08 2 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xff0c 敬请各位指出
  • java小程序(3)

    文章标题 java 小程序 xff08 3 xff09 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者声明 本人水平有限 xff0c 失误之处 xff0c 敬请各位指出
  • Python爬虫淘宝基于selenium抓取淘宝商品数据2021年测试过滑动验证

    配置一下 34 可能需要修改的参数 34 xff0c 就可以食用底部代码了 ps 可能已失效 本文章代码功能准备工作Python用到的库和准备工作 可能需要修改的参数在CMD中打开一个Chrome浏览器并启用端口给Selenium调用导入模
  • Android下的应用编程——用HTTP协议实现文件上传功能

    文章标题 Android 下的应用编程 用 HTTP 协议实现文件上传功能 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者 MSN zengjiansheng1 64 h
  • 从HTTP协议分析转发和重定向的区别

    文章标题 从 HTTP 协议分析转发和重定向的区别 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者 MSN zengjiansheng1 64 hotmail com 作
  • 编写SQL查询的关键—SQL语句的执行顺序

    文章标题 编写 SQL 查询的关键 SQL 语句的执行顺序 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 作者 MSN zengjiansheng1 64 hotmail c
  • 用Java实现二叉树

    lt Font Definitions 64 font face font family 宋体 panose 1 2 1 6 0 3 1 1 1 1 1 mso font alt SimSun mso font charset 134 ms
  • Java下实现快速排序

    文章标题 lt Font Definitions 64 font face font family 宋体 panose 1 2 1 6 0 3 1 1 1 1 1 mso font alt SimSun mso font charset 1
  • Java实现之冒泡排序

    lt Font Definitions 64 font face font family 宋体 panose 1 2 1 6 0 3 1 1 1 1 1 mso font alt SimSun mso font charset 134 ms
  • 38.“财务自由“,喂给创业者的童话故事

    现在我们拼搏两三年 xff0c 等公司上市后 xff0c 就实现财务自由 xff0c 就能过上好日子 上面是我看到有些人拉创业者入伙时说的话 xff0c 很具有蛊惑性 我很疑惑 xff0c 怎么 财务自由 就和 过上好日子 画上了等号呢 x
  • nodejs模块xml2js解析xml的坑

    在一个项目中 xff0c 用到nodejs模块xml2js解析xml xff0c xml的数据如下 xff1a lt xml gt lt MsgId gt 6197906553041859764 lt MsgId gt lt xml gt
  • 推荐《超右脑英语学习法》

    文章标题 推荐 超右脑英语学习法 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者QQ 190678908 作者MSN zengjiansheng1 64 hotmail com 作者博客 blog cs
  • git回退到某个历史版本

    1 使用git log命令查看所有的历史版本 xff0c 获取某个历史版本的id xff0c 假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96 2 git reset hard 139
  • 手把手教你研发属于自己的智能无人机

    1 让智能无人机梦想变成现实 对于大多数极客学员来说 xff0c 自己组装一台无人机 xff0c 可以航拍 xff0c 可以目标跟踪 xff0c 是心中的梦想 xff0c 但是实现梦想的学员却很少
  • zookeeperd无法启动的分析

    在文章 zookeeper启动失败的排错中描述了zookeeperd的一种启动错误 xff0c 今天笔者还发现了另外一种启动错误 xff0c 顺便记录下来 xff1a 一台测试的服务器重启后 xff0c 运行zookeeperd的启动脚本显
  • 用go代码操作git

    git2go是一个用go代码操作git的库 xff0c 需要依赖于第三方库libgit2 安装libgit2前 xff0c 先安装相应的包 xff1a yum y install libssh2 devel 在 https github c