使用JGIT checkout远端分支时新分支HEAD指向本地master如何解决
问题原因
你当前的代码没有指定新分支的起始提交点,JGit默认会使用本地当前HEAD指向的提交(也就是你本地master分支的最新提交)来创建新分支,因此会出现新分支和远端分支提交不一致的问题。
正确实现代码
你需要额外调用setStartPoint方法指定新分支的起始点为对应的远端分支引用即可,示例如下:
git.checkout() .setCreateBranch(true) .setName(<branchName>) // 指定新分支从远端对应分支的最新提交开始创建 .setStartPoint("origin/" + <branchName>) .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK) .call();
这段代码的执行效果完全等价于命令行执行git checkout -b <branchName> origin/<branchName>,新创建的本地分支HEAD会和远端对应分支的HEAD完全对齐,同时自动配置远端跟踪关系。
注意事项
执行上述代码前,建议先执行git.fetch().call()拉取远端最新的分支引用,避免本地缓存的远端分支信息不是最新版本,导致新分支的提交落后于远端实际最新提交。
内容的提问来源于stack exchange,提问作者incareofvarx
相关产品推荐
相关产品推荐

