jgit使用說明


jgit是一個java代碼提交git的插件,可以通過代碼連接git遠程倉庫,在本地建立版本庫,進行拉取、提交、推送等操作。

首先貼出maven依賴

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

當然還可以使用其他版本的依賴,大致操作都一樣。

然后就是代碼中的操作了

首先聲明一些常量,然后在本地建立版本庫

    //定義本地git路徑
    public static final String LOCALPATH = "D:/git_home/demo/";
    //.git文件路徑
    public static final String LOCALGITFILE = LOCALPATH + ".git";
    //遠程倉庫地址
    public static final String REMOTEREPOURI = "http://172.16.124.101/yangyi/RegexFile.git";//操作git的用戶名
    public static final String USER = "8844@163.com";
    //密碼
    public static final String PASSWORD = "123456";
    //git遠程倉庫服務器ip
    public static final String HOST = "172.16.124.101";
    //建立與遠程倉庫的聯系,僅需要執行一次
    public static String setupRepo() {
        String msg = "";
        try {
            Git git = Git.cloneRepository()
                .setURI(REMOTEREPOURI)
                .setCredentialsProvider(new UsernamePasswordCredentialsProvider(USER, PASSWORD))
                .setBranch("master")
                .setDirectory(new File(LOCALPATH)).call(); msg = "git init success!"; } catch (Exception e) { msg = "git已經初始化!"; } return msg; }

建立本地git倉庫 然后就是拉取遠程的文件了

    //pull拉取遠程倉庫文件
    public static boolean pullBranchToLocal(){
        boolean resultFlag = false;
        //git倉庫地址
        Git git;
        try {
            git = new Git(new FileRepository(LOCALGITFILE));
            git.pull().setRemoteBranchName("master")
              .setCredentialsProvder(new UsernamePasswordCredentialsProvider(USER,PASSWORD)).call(); resultFlag = true; } catch (IOException | GitAPIException e) { e.printStackTrace(); } return resultFlag; }

然后就是提交推送到git了

    //提交git
    public static boolean commitFiles() {
        Git git = null;
        try {
            git = Git.open(new File(LOCALGITFILE));
            AddCommand addCommand = git.add();
       //add操作 add -A操作在jgit不知道怎么用 沒有嘗試出來 有興趣的可以看下jgitAPI研究一下 歡迎留言 addCommand.addFilepattern(
".").call(); RmCommand rm=git.rm(); Status status=git.status().call();
       //循環add missing 的文件 沒研究出missing和remove的區別 就是刪除的文件也要提交到git Set
<String> missing=status.getMissing(); for(String m : missing){ logger.info("missing files: "+m); rm.addFilepattern(m).call();
          //每次需重新獲取rm status 不然會報錯 rm
=git.rm(); status=git.status().call(); } //循環add remove 的文件 Set<String> removed=status.getRemoved(); for(String r : removed){ logger.info("removed files: "+r); rm.addFilepattern(r).call(); rm=git.rm(); status=git.status().call(); }
       //提交 git.commit().setMessage(
"commit").call();
       //推送 git.push().setCredentialsProvider(
new UsernamePasswordCredentialsProvider(USER, PASSWORD)).call(); return true; } catch (Exception e) { e.printStackTrace(); return false; } }

然后寫個方法測試一下

    public static void main(String[] args) {
        setupRepo();
        pullBranchToLocal();
        commitFiles();
    }

如有問題,歡迎留言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM