[Java]JGit用法总结

3848人阅读 评论(0) 收藏 举报
分类:

clone

public static void gitClone(String remoteUrl, File repoDir) {
    try {
        Git git = Git.cloneRepository()
                .setURI(remoteUrl)
                .setDirectory(repoDir)
                .call();

        logger.info("Cloning from " + remoteUrl + " to " + git.getRepository());
    } catch (Exception e) {
        logger.info(e.getMessage());
    }
}

checkout

checkout要在/.git目录中进行

public static void gitCheckout(File repoDir, String version) {
    File RepoGitDir = new File(repoDir.getAbsolutePath() + "/.git");
    if (!RepoGitDir.exists()) {
        logger.info("Error! Not Exists : " + RepoGitDir.getAbsolutePath());
    } else {
        Repository repo = null;
        try {
            repo = new FileRepository(RepoGitDir.getAbsolutePath());
            Git git = new Git(repo);
            CheckoutCommand checkout = git.checkout();
            checkout.setName(version);
            checkout.call();
            logger.info("Checkout to " + version);

            PullCommand pullCmd = git.pull();
            pullCmd.call();

            logger.info("Pulled from remote repository to local repository at " + repo.getDirectory());
        } catch (Exception e) {
            logger.info(e.getMessage() + " : " + RepoGitDir.getAbsolutePath());
        } finally {
            if (repo != null) {
                repo.close();
            }
        }
    }
}

pull

pull要在/.git目录中进行

public static void gitPull(File repoDir) {
    File RepoGitDir = new File(repoDir.getAbsolutePath() + "/.git");
    if (!RepoGitDir.exists()) {
        logger.info("Error! Not Exists : " + RepoGitDir.getAbsolutePath());
    } else {
        Repository repo = null;
        try {
            repo = new FileRepository(RepoGitDir.getAbsolutePath());
            Git git = new Git(repo);
            PullCommand pullCmd = git.pull();
            pullCmd.call();

            logger.info("Pulled from remote repository to local repository at " + repo.getDirectory());
        } catch (Exception e) {
            logger.info(e.getMessage() + " : " + RepoGitDir.getAbsolutePath());
        } finally {
            if (repo != null) {
                repo.close();
            }
        }
    }
}

show status

show status要在/.git目录中进行

public static void gitShowStatus(File repoDir) {
    File RepoGitDir = new File(repoDir.getAbsolutePath() + "/.git");
    if (!RepoGitDir.exists()) {
        logger.info("Error! Not Exists : " + RepoGitDir.getAbsolutePath());
    } else {
        Repository repo = null;
        try {
            repo = new FileRepository(RepoGitDir.getAbsolutePath());
            Git    git    = new Git(repo);
            Status status = git.status().call();
            logger.info("Git Change: " + status.getChanged());
            logger.info("Git Modified: " + status.getModified());
            logger.info("Git UncommittedChanges: " + status.getUncommittedChanges());
            logger.info("Git Untracked: " + status.getUntracked());
        } catch (Exception e) {
            logger.info(e.getMessage() + " : " + repoDir.getAbsolutePath());
        } finally {
            if (repo != null) {
                repo.close();
            }
        }
    }
}

参考资料

JGit API:http://download.eclipse.org/jgit/site/3.7.0.201502260915-r/index.html
JGit Cookbook:https://github.com/centic9/jgit-cookbook

查看评论

Java 使用JGit获取Git代码

package com.sf.sgs.smp.manager.test;import org.eclipse.jgit.api.*; import org.eclipse.jgit.api.error...
  • gloomy_114
  • gloomy_114
  • 2016-11-11 16:06:47
  • 2857

JGit 如何实现

如何使用JGit的API来实现git命令的执行 问题: 1.怎么配置使用JGit api  应该是导入相关的包即可 2.关于执行命令的参数,主要是通过相应的封装类获取,具体是...
  • as365927660
  • as365927660
  • 2015-12-22 23:47:59
  • 1702

GitHook+JGit实现最新代码的自动克隆或者项目的自动部署

需求 思路 开工 设置webhook 响应webhook的服务器 http接口 clone和checkout操作 遍历本地仓库 IO流读取内容 运行结果需求 分析师写的sql需要映射到另外一个后台...
  • su20145104009
  • su20145104009
  • 2017-08-08 20:23:52
  • 910

JGit Authentication JGit验证机制

验证机制在JGit中大部分与本地git相同。普遍使用SSH协议和HTTP(S)协议和他们所支持的验证方法。 这篇文章总结了如何使用JGit的验证API去安全连接远程GIT库。 虽然在下面的例子中使...
  • gloomy_114
  • gloomy_114
  • 2016-11-10 18:52:27
  • 2083

java使用jgit提交代码

import org.eclipse.jgit.api.AddCommand; import org.eclipse.jgit.api.CommitCommand; import org.eclips...
  • Kingson_Wu
  • Kingson_Wu
  • 2015-09-20 21:24:00
  • 3120

jgit---git api for java

  • 2017年06月22日 21:50
  • 2.34MB
  • 下载

git pull Checkout conflict with files:

Checkout conflict with files
  • zhou3ming8
  • zhou3ming8
  • 2017-04-05 11:15:06
  • 4837

jgit pull 分之代码

import java.io.File;import java.util.ArrayList;import java.util.List;import org.eclipse.jgit.api.Cre...
  • yizhizouxiaqu
  • yizhizouxiaqu
  • 2016-05-04 15:53:19
  • 1463

Git fetch和git pull的区别

原文: http://www.tech126.com/git-fetch-pull/  Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最...
  • hudashi
  • hudashi
  • 2012-06-14 20:56:10
  • 397804

通过 JGit 访问 Git 仓库

一个Git库仓在 JGit里面表现为Repository类,该类可以看作是这个库的句柄。通过Repository类实例,你可以创建JGit命令以及可以控制配置、参数等。 获取Git库仓的引...
  • wxhvc
  • wxhvc
  • 2014-10-12 17:27:47
  • 1404
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 45万+
    积分: 6174
    排名: 5032
    第三方账号
    博客专栏