You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java程序化创建GitHub仓库并推送代码?

用Java程序化创建GitHub仓库并推送代码的最佳方案

一、核心实现逻辑

分两个关键步骤:先通过GitHub官方API创建远程仓库,再借助Git客户端(如JGit)完成本地代码的初始化、提交与推送。JGit仅负责Git操作层面的处理,仓库创建必须依赖GitHub的REST API。

二、具体实现方案

1. 创建GitHub仓库(推荐官方Java SDK)

使用org.kohsuke:github-api库,它封装了GitHub REST API,比手动编写HTTP请求更高效可靠。

Maven依赖

<dependency>
    <groupId>org.kohsuke</groupId>
    <artifactId>github-api</artifactId>
    <version>1.317</version>
</dependency>

创建仓库代码片段

import org.kohsuke.github.GHCreateRepositoryBuilder;
import org.kohsuke.github.GitHub;

public class GitHubRepoCreator {
    public static void createRepo(String token, String repoName) throws Exception {
        // 用个人访问令牌(PAT)完成认证
        GitHub github = GitHub.connectUsingOAuth(token);
        // 创建公开仓库,如需私有调用private_(true)即可
        GHCreateRepositoryBuilder builder = github.createRepository(repoName);
        builder.description("程序化创建的仓库")
               .private_(false)
               .create();
    }

    public static void main(String[] args) throws Exception {
        String yourToken = "你的GitHub个人访问令牌";
        String repoName = "test-auto-repo";
        createRepo(yourToken, repoName);
    }
}

注意:个人访问令牌需要在GitHub设置中生成,且必须勾选repo权限。

2. 用JGit推送代码到新仓库

JGit是Eclipse官方的Java Git实现,被大量开发者用于Java项目中的Git操作,功能覆盖大部分常规场景。

Maven依赖

<dependency>
    <groupId>org.eclipse.jgit</groupId>
    <artifactId>org.eclipse.jgit</artifactId>
    <version>6.7.0.202309050840-r</version>
</dependency>

推送代码代码片段

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.PushCommand;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;

import java.io.File;

public class JGitPushExample {
    public static void pushToGitHub(String localRepoPath, String remoteRepoUrl, String token) throws Exception {
        // 初始化本地仓库(若未初始化)
        try (Git git = Git.init().setDirectory(new File(localRepoPath)).call()) {
            // 添加所有文件到暂存区
            git.add().addFilepattern(".").call();
            // 提交代码
            git.commit().setMessage("Initial commit").call();
            // 关联远程仓库
            git.remoteAdd().setName("origin").setUri(new org.eclipse.jgit.transport.URIish(remoteRepoUrl)).call();
            // 设置认证凭证(PAT作为密码,用户名可留空)
            UsernamePasswordCredentialsProvider credentials = new UsernamePasswordCredentialsProvider(token, "");
            // 执行推送
            PushCommand pushCommand = git.push().setCredentialsProvider(credentials);
            pushCommand.call();
        }
    }

    public static void main(String[] args) throws Exception {
        String localPath = "/path/to/your/local/code";
        String remoteUrl = "https://github.com/你的用户名/test-auto-repo.git";
        String yourToken = "你的GitHub个人访问令牌";
        pushToGitHub(localPath, remoteUrl, yourToken);
    }
}

3. 命令行工具替代方案

若不想引入Java依赖,可通过ProcessBuilder调用gh命令行工具完成操作,示例如下:

ProcessBuilder pb = new ProcessBuilder("gh", "repo", "create", "test-auto-repo", "--public");
pb.inheritIO();
Process process = pb.start();
process.waitFor();

这种方式无需编写API调用代码,但需确保环境已安装gh并完成认证配置。

三、JGit使用体验

JGit是Java生态中处理Git操作的主流工具,功能全面,能覆盖克隆、提交、推送、分支管理等绝大多数常规场景。虽然API偏底层,部分操作需要多写几行代码,但对于推送这类基础操作,上述代码片段完全够用,稳定性和兼容性都有保障。

内容的提问来源于stack exchange,提问作者vk l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:15:36