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