之前写的一篇有些bug,而且里面的概念也没搞清楚,查询了《Git权威指南》后又优化了一下,如下:
public class GitUtil {
private final static String GIT = ".git";
private final static String REF_REMOTES = "refs/remotes/origin/";
/**
* 将文件列表提交到git仓库中
* @param gitRoot git仓库目录
* @param files 需要提交的文件列表
* @param remark 备注
* @return 返回本次提交的版本号
* @throws IOException
*/
public static String commitToGitRepository(String gitRoot, List<String> files, String remark)
throws Exception {
if (StringUtils.isNotBlank(gitRoot) && files != null && files.size() > 0) {
File rootDir = new File(gitRoot);
//初始化git仓库
if (new File(gitRoot + File.separator + GIT).exists() == false) {
Git.init().setDirectory(rootDir).call();
}
//打开git仓库
Git git = Git.open(rootDir);
//判断工作区与暂存区的文件内容是否有变更
List<DiffEntry> diffEntries = git.diff()
.setPathFilter(PathFilterGroup.createFromStrings(files))
.setShowNameAndStatusOnly(true).call();
if (diffEntries == null || diffEntries.size() == 0) {
throw ne