问题描述
我为项目的构建和部署功能(本地计算机中的)使用jgit api。我通过以下命令通过命令提示符提交了整个源代码(java项目):
$ b
I am using jgit api for my project's build, deployment functionalities (in Local Machine). I commited whole source (java project) via command prompt by following commands
-
git add。
-
git commit -a -mInitial_Source
这里我得到了提交ID cb96c685a5a4338f852a782631df8d1cf5dca21d
Here I get the commit id as cb96c685a5a4338f852a782631df8d1cf5dca21d
git tag Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d
[cb96c685a5a4338f852a782631df8d1cf5dca21d已提交]
[cb96c685a5a4338f852a782631df8d1cf5dca21d is commitid]
git push
但是当我试图通过getPeeledObjectId()获取提交ID时,它返回 null
but when i tried to get commit id via getPeeledObjectId() it is returning null
我的代码是
my code is
Ref tag = git.getRepository().getRef("Initial_Source");
Ref peeledRef = git.getRepository().peel(tag);
return peeledRef.getPeeledObjectId(); -- this is returning null
,而不是 getPeeledObjectId()
我尝试使用 getObjectId()
。它提供了commitId。但是我想知道何时使用 getPeelObjectId()
和 getObjectId()
。
but instead of getPeeledObjectId()
I tried using getObjectId()
. It's giving the commitId. But I wanna know when to use getPeelObjectId()
and getObjectId()
.
这些方法是什么?
推荐答案
getPeeledObjectId()方法在:
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,那里没有什么可以再次剥离:您已经提交了。
请参阅
Since your tag is a pointer to a commit (referenced by git.getRepository().peel(tag)
), getObjectId()
gets its id, there is nothing to "peel" again: you already have the commit.
See "What is the difference between an annotated and unannotated tag?"
请参阅:它考虑到了两种标记:
See porcelain/ListTags.java
example: it takes into account the two kinds of tag:
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());
}
}
这篇关于Ref Object的getPeeledObjectId()和getObjectId()之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!