JAVA创建git仓库

我们通常使用git都是使用的git的客户端,比如linux下的脚本。其实windows下也是间接使用linux脚本来进行操作。不过在现在有完全使用java语言实现的git:JGIT。我们可以通过jgit来完成我们所有的git操作。

下面我将简单些一个例子来说明,使用java来创建一个git仓库,并且为仓库添加一个远端仓库地址。如果通过git脚本来执行,那么语句就是:

1
2
3
git init

git remote add git://XXXXXX

首先我们需要下载org.eclipse.jgit.jar 包,并将其加入eclipse 的classpath中(当然这里使用eclipse来完成操作)。示例代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.toozhao.git;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.InitCommand;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.transport.RefSpec;
import org.eclipse.jgit.transport.RemoteConfig;
import org.eclipse.jgit.transport.URIish;

public class TestJGit {
public static void main(String[] args) {
Repository repo = null;

String path = "d:/testjgit"; // 设置git仓库的路径
InitCommand init = new InitCommand();
// 设置路径
init.setBare(false).setDirectory(new File(path));
// 执行git init ,创建仓库
Git git;
try {
git = init.call(); // 创建仓库
repo = git.getRepository();
System.out.println("create repo success");
} catch (GitAPIException e) {

e.printStackTrace();
}
// 执行 git remote add 命令
// 实例化一个RemoteConfig 对象,用户配置远端仓库
StoredConfig config = repo.getConfig();
try {
RemoteConfig remoteConfig = new RemoteConfig(config, "origin");
// 设置你的远端地址
URIish uri = new URIish("git://github.com/wahyd4/testjgit");
// 设置哪个分支
RefSpec refSpec = new RefSpec("+refs/head/*:refs/remotes/origin/*");
// 更新配置
remoteConfig.addFetchRefSpec(refSpec);
remoteConfig.addPushRefSpec(refSpec);
remoteConfig.addURI(uri);
remoteConfig.addPushURI(uri);
// 更新配置
remoteConfig.update(config);
// 保存到本地文件中
config.save();
System.out.println("git remote add success.");
} catch (URISyntaxException e) {

e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

执行完本代码后,打开d:/testjgit/可以看到一个.git的隐藏文件夹(如果看不到,请设置去除隐藏文件夹)。表明它已经是一个git仓库了。如果你的eclipse安装有aptana 插件,将仓库导入eclipse,eclipse还可以自动识别出git仓库。而在Egit 1.x插件中版本中都不能识别出。

如果你打开.git/CONFIG文件。你还可以看到:

1
2
3
4
5
6
7
8
9
[core]
repositoryformatversion = 0
filemode = false
logallrefupdates = true
[remote "origin"]
url = git://github.com/wahyd4/testjgit
pushurl = git://github.com/wahyd4/testjgit
fetch = +refs/head/*:refs/remotes/origin/*
push = +refs/head/*:refs/remotes/origin/*

这些既是我们对仓库进行的配置,全都由这个文件定义。使用aptana,你可以直接将仓库push 到你设置的远端地址。