使用REST API进行Git pull和Git clone

3

1
通过REST API克隆存储库到底意味着什么?你期望得到什么格式的返回?为什么不直接使用git本身? - Rob
我想仅使用REST API来完成它。它可以是任何格式。 - Farhan Bhoraniya
这不是 GitHub REST API 的用途。如果您想在存储库上运行 git 命令,请使用 git 客户端。 - wmorrell
2个回答

4
你可以从存档网址下载zip或tar格式的repo。
Eg : https://api.github.com/repos/:owner/:repo/:archive_format/:ref

Archive_format可以是zipball或tarball。 Ref是分支名称,默认情况下,api将使用主分支。

然后你可以从这个url下载repo

URL url = new URL(urlStr);
try( ReadableByteChannel rbc = Channels.newChannel(url.openStream()) )
{
    try( FileOutputStream fos = new FileOutputStream(filepathToSave) )
    {
            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
    }
}

0
如果你想获取一个git仓库,并能够执行git addgit commit或其他任何git命令,使用git clone
如果你只想获取仓库的内容,可以通过链接https://github.com/{OWNER}/{REPOSITORY}/archive/{BRANCH_NAME}.(zip|tar.gz)下载存档文件,例如https://github.com/ansible/ansible/archive/devel.tar.gz
但是那样你将无法进行任何git交互操作...

我已经尝试过这个API,正如你所说的那样,我无法与它进行交互。 - Farhan Bhoraniya
不,这样你只能获取库的内容,而不能获取库本身。要获取库,你不能没有 Git 客户端做到这点。 - zigarn
如果您想创建自己的客户端,这里有一些关于它如何工作的信息:https://git-scm.com/book/en/v1/Git-Internals-Transfer-Protocols - zigarn
这是不正确的,您可以使用API来创建提交,而不仅仅是通过git add / git commit。https://docs.github.com/en/rest/reference/git#create-a-commit - dogmatic69
没错,现在可以使用“git数据库”REST API实现,但我认为在4年前回答时还不存在这个API。 - zigarn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接