我想在現有的存儲庫中創建分支,然後跟蹤該分支。創建分支成功,新創建的分支仍然跟蹤主分支。我嘗試了幾種不同的解決方案,但結果相同 - 創建分支,但跟蹤主分支。JGit - 無法跟蹤新創建的分支
首先我會克隆庫:
Git.cloneRepository()./*set creds*/.setURI(..).setDirectory(...).call
到目前爲止好。
接下來,從克隆產生的git文件構建存儲庫。
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repo = builder.setGitDir(gitFile).readEnvironment().findGitDir()
.build();
在這一點上,我曾經嘗試都checkingOut的分支createBranch
設置爲true,並在兩個步驟做 - 創建,然後檢查。這裏是兩步法:
git.branchCreate()
.setForce(true)
.setName(branchName)
.setStartPoint("origin/master")
.call();
git.checkout()
.setName(branchName)
.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK)
.setStartPoint("origin/"+branchName)
.call();
我曾嘗試其他的事情:
- 設置上游模式SeetupUpstreamMode.SET_UPSTREAM
- 設置起點BRANCHNAME上創建步
- 沒有做單獨結帳,但在結帳時設置爲
creatBranch(true)
- 在創建和結帳之間進行推送
結果始終的.git/config文件看起來像:
[remote "origin"]
url = ssh://..
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[branch "newbranch1"]
remote = origin
merge = refs/heads/master << TRACKING master, not newbranch1
在我與普通的git創建分支(不jgit)配置文件看起來像:
[remote "origin"]
url = ssh:...
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[branch "newbranch2"]
remote = origin
merge = refs/heads/newbranch2 << WANT THIS
任何我想如何讓我的新分支跟蹤分支而不是主分支?
使用jgit-4.6.0.201612231935
所以,你要跟蹤尚不遙控器上存在的一個分支(謝謝呂迪格赫爾曼)? –
請注意,'Git.cloneRepository()'返回一個'Git'實例,您可以通過'getRepository()'獲取存儲庫,不需要使用'FileRepositoryBuilder'。另外,完成後請不要忘記關閉返回的Git實例。 –