我正在使用 jgit api 来实现项目的构建、部署功能(在本地机器中)。我通过以下命令通过命令提示符提交了整个源代码(java项目)
git add .
-
git commit -a -m "Initial_Source"
这里我得到的提交 ID 为cb96c685a5a4338f852a782631df8d1cf5dca21d
-
git tag Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d
[cb96c685a5a4338f852a782631df8d1cf5dca21d 已提交]
git push
git push --tags
但是当我尝试获取提交 ID 来获取 Peeled ObjectId() 时,它正在返回null
我的代码是
Ref tag = git.getRepository().getRef("Initial_Source");
Ref peeledRef = git.getRepository().peel(tag);
return peeledRef.getPeeledObjectId(); -- this is returning null
但不是getPeeledObjectId()
我尝试使用getObjectId()
。它给出了commitId。但我想知道什么时候使用getPeelObjectId()
and getObjectId()
.
那些方法是什么?
getPeeledObjectId() 方法在 a 上始终为 null无注释(轻量级)标签 https://git-scm.com/book/en/v2/Git-Basics-Tagging:
git tag Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d
这适用于带注释的标签
git tag -a Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d
# or
git tag -m "Initial Source" Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d
由于您的标签是指向commit(引用自git.getRepository().peel(tag)
), getObjectId()
获取它的 id,没有什么可以再次“剥离”:你已经有了提交。
See "带注释的标签和不带注释的标签有什么区别? https://stackoverflow.com/q/11514075/6309"
See porcelain/ListTags.java example https://github.com/centic9/jgit-cookbook/blob/f01714f1fda6cafad9850194d76c182508702907/src/main/java/org/dstadler/jgit/porcelain/ListTags.java#L42-L54:它考虑了两种标签:
List<Ref> call = git.tagList().call();
for (Ref ref : call) {
System.out.println("Tag: " + ref + " " + ref.getName() + " " + ref.getObjectId().getName());
// fetch all commits for this tag
LogCommand log = git.log();
Ref peeledRef = repository.peel(ref);
if(peeledRef.getPeeledObjectId() != null) {
// Annotated tag
log.add(peeledRef.getPeeledObjectId());
} else {
// Lightweight tag
log.add(ref.getObjectId());
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)