使用标记作为起点创建新分支时,假设为MyTag
,结果分支处于分离状态。
是否可以使用JGit API检索新分支所在的标记名称?
我将实现一个类似于git status
的命令,可以打印:
HEAD detached at MyTag
答案 0 :(得分:0)
不存储分支(或更一般地,任何参考)的起点。基本上,分支或标记只是某个commit-id上的标签 - 当然,提交可以有多个标记或分支。
NameRevCommand
可以帮助您找到给定提交的可读名称。
RevCommit headCommit = git.commit().setMessage( "initial" ).call();
git.tag().setObjectId( headCommit ).setName( "mytag" ).setMessage( "tag on initial" ).call();
git.branchCreate().setName( "mybranch" ).setStartPoint( "refs/tags/mytag" ).call();
Map<ObjectId, String> names = git.nameRev().addPrefix( "refs/tags/" ).add( headCommit ).call();
System.out.println( names.get( headCommit.getId() ) );
以上代码段将为mytag
返回headCommit
。请注意,标记名称的首选项设置为addPrefix( "refs/tags/" )
。
但请注意,一旦在新分支上进行进一步提交,mytag
的相关性将会丢失。
BTW,从标签创建的分支不会必须导致分离状态。