我用JGit签出了一个远程跟踪分支。
Git binrepository = cloneCmd.call()
CheckoutCommand checkoutCmd = binrepository.checkout();
checkoutCmd.setName( "origin/" + branchName);
checkoutCmd.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK );
checkoutCmd.setStartPoint( "origin/" + branchName );
Ref ref = checkoutCmd.call();
文件已签出,但头部未指向分支。下面是git状态的输出,
$ git status
# Not currently on any branch.
nothing to commit (working directory clean)
同样的操作也可以在git命令行中执行,非常简单,而且非常有效,
git checkout -t origin/mybranch
如何做到这一点?
如checkout命令的代码所示,您需要将布尔值
createBranch
设置为true
,以创建本地分支。
您可以在
CheckoutCommandTest
-testCreateBranchOnCheckout()
@Test
public void testCreateBranchOnCheckout() throws Exception {
git.checkout().setCreateBranch(true).setName("test2").call();
assertNotNull(db.getRef("test2"));
}
不管出于什么原因,罗宾斯特发布的代码对我来说并不适用。特别是,创建的本地分支没有跟踪远程分支。这就是我使用的对我有用的东西(使用jgit 2.0.0.201206130900-r):
git.pull().setCredentialsProvider(user).call();
git.branchCreate().setForce(true).setName(branch).setStartPoint("origin/" + branch).call();
git.checkout().setName(branch).call();
必须使用setCreateBranch
创建分支:
Ref ref = git.checkout().
setCreateBranch(true).
setName("branchName").
setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).
setStartPoint("origin/" + branchName).
call();
您的第一个命令相当于git checkout origin/mybranch
。
(编辑:我向JGit提交了一个补丁,以改进Checkout命令的留档:https://git.eclipse.org/r/8259)
我正在使用JGit创建一个新的git存储库,文件夹中已经存在的所有内容都另存为new branch。 我正在用 (默认情况下,master分支是在上面的语句之后创建的,所以我将其重命名为Backup分支)。 问题是当我推后支时,它被推了,但我无法建立远程跟踪。 从终端:如果我使用结果是 根据链接,让现有的Git分支跟踪远程分支?我可以使用终端中的来指定推送backupbranch后的任何时间。 如
有没有一种方法可以使用JGit API从远程URL进行克隆,我可以在某个地方更改默认的来源,并将其设置为,就像在中配置了另一个远程URL一样?
有没有办法使用JGit确定一个分支是远程分支还是本地分支(或两者都是)?我有: 它给出: 因此,newFeatureBranch既是本地分支,也是远程分支。目前我检查ref.getName()是否包含“remotes/origin”。但是,有没有更好的方法来确定分支是远程的还是本地的?
在Java中,我与JGit合作,在远程存储库中执行一些操作。但是,当我依次在版本之间执行稀疏签出时: 它保留最后一个签出文件并添加新的签出文件。只有当目录中的文件名不相同时才会发生这种情况。以这种方式使用checkout命令时,如何避免这种情况? 我考虑过删除正在签出的文件夹中的文件(本例中是脚本),但我不知道当“下载”的文件具有相同的名称时,是否会带来冲突。
远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支 {#2}。 远程跟踪分支 {#2}是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移
远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支。 远程跟踪分支是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移动。 远程跟踪分支像