Ich möchte einen Zweig in einem vorhandenen Repository erstellen und diesen Zweig dann verfolgen. Der Erstellungszweig ist erfolgreich, der neu erstellte Zweig verfolgt immer noch den Master. Ich habe mehrere verschiedene Lösungen ausprobiert, aber das gleiche Ergebnis - Zweig wird erstellt, aber verfolgt Master.JGit - Ich kann den neu erstellten Zweig nicht verfolgen
Zuerst habe ich klonen das Repository:
Git.cloneRepository()./*set creds*/.setURI(..).setDirectory(...).call
So weit so gut.
Erstellen Sie als Nächstes das Repository aus der Git-Datei, die vom Klon erstellt wurde.
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repo = builder.setGitDir(gitFile).readEnvironment().findGitDir()
.build();
An dieser Stelle habe ich versucht, sowohl den Zweig mit createBranch
Satz auf true checkingOut, und es in zwei Schritten tun - schaffen, dann überprüfen. Hier ist die zweistufige Methode:
git.branchCreate()
.setForce(true)
.setName(branchName)
.setStartPoint("origin/master")
.call();
git.checkout()
.setName(branchName)
.setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK)
.setStartPoint("origin/"+branchName)
.call();
Andere Dinge, die ich versucht habe:
- Einstellung Upstream-Modus
- Einstellung Startpunkt SeetupUpstreamMode.SET_UPSTREAM Schritt auf branch erstellen
- nicht tun separater Checkout, aber Einstellung
creatBranch(true)
am Checkout - schieben zwischen erstellen und Kasse
Das Ergebnis ist immer .git/config-Datei, die wie folgt aussieht:
[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
Any:
[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
Auf den Zweigen ich mit regelmäßigen git erstellen (nicht JGit) die Konfigurationsdatei wie folgt aussieht Gedanken da draußen, wie ich meinen neuen Zweig den Ast statt Master machen lassen kann?
Mit JGit-4.6.0.201612231935
Also, wollen Sie einen Zweig verfolgen, die noch nicht auf der Fernbedienung vorhanden ist? –
Beachten Sie, dass 'Git.cloneRepository()' eine 'Git'-Instanz zurückgibt, von der Sie das Repository über 'getRepository()' beziehen können, ohne 'FileRepositoryBuilder' zu benötigen. Vergessen Sie auch nicht, die zurückgegebene Git-Instanz zu schließen, wenn Sie fertig sind. –