# Eclipse eGit Branching



## freez (18. Aug 2011)

Hallo,

nach langem Testen und Vorstellung bei meinem Kollegen sind wir dem Umstieg auf eGit sehr nah. Hier 2 Fragen meiner Kollegen, die ich nicht beantworten konnte und auf die ich im Netz keine Antworten fand:

1. Was macht pull genau? ein fetch und merge ins aktuelle Working directory oder fetch und merge aller Branches, die man lokal hat.
2. Wenn ich einen Branch anlege, mache ich das aus dem lokal oder remote tracking Bereich? Vor allem, was hat das mit der Pull Strategie zu tun, die ich gleich danach einrichten muss.


----------



## TheDarkRose (18. Aug 2011)

zu 1. Immer nur in den aktuellen ausgecheckten Branch.
zu 2. Je nachdem. Einen Branch mit remote tracking erstellt du meistens nur, wenn ein gleichnamiger lokaler Branch wie im remote Repo noch nicht vorhanden ist. ich nehme dann meisten immer merge. Sonst mache ich immer eigentlich nur einen lokalen tracking bereich,


----------



## Matthias Sohn (25. Aug 2011)

1. fetch und merge in den aktuell ausgecheckten Branch, dabei wird der konfigurierte getrackte Branch des remote repositories gemerged (kann man über merge strategy einstellen wenn man den lokalen Branch basierend auf einem remote tracking branch anlegt).
2. Falls du Pull einsetzen willst immer basierend auf einem remote tracking branch, meistens ist das refs/remotes/origin/master


----------



## freez (8. Sep 2011)

Guten Morgen,

ich muss das Thema noch mal aufreissen, da es trotz der Erklärungen noch Fragen gibt.

Man hat ja generell 3 Möglichkeiten der Pull Strategy (Rebase, Merge, None). Bei None kann ich gar nicht pullen. Rebase und Merge machen prinzipiell das gleiche (in Bezug auf das Pullen ... arbeiten nur intern etwas anders ... die Unterschiede sind mir bekannt und sollten für dieses Problem nicht relevant sein !?). Wichig ist mir eigentlich zu verstehen, wann ich 'None' nehme und wann ich 'Rebase'/'Merge' nehme.

Es gibt ja 2 Möglichkeiten einen Branch (von z.B. master) zu erstellen:
1. aus dem Local Bereich auf Master klicken und Branch erstellen
2. aus dem Remote Tracking Bereich auf den Master klicken und Branch erstellen

Bei 1. wird mir die Pull Strategy None vorgegeben und ich würde dadurch nie pullen können. Wähle ich 'Rebase' oder 'Merge' aus, stellt sich die Frage, mit was eGit dann merged/rebased:
a. local/master
b. remote tracking/master
c. remote tracking/neuerBranch

Wobei mir a.) irgendwie nicht logisch erscheint, da ich pullen möchte und dies wird nunmal mit remote gemacht.?

Bei 2. wird mir 'merge' vorgegeben, aber ich könnte trotzdem auch 'none' auswählen. bei None kann ich wieder nicht pullen. Wenn ich 'Merge' oder 'Rebase' auswähle, stellt sich wieder die Frage mit was:
d. remote tracking/master
e. remote tracking/neuerBranch

Hier fällt local weg, da ich es logisch finde weil ich keinen local Branch zum branchen ausgewählt habe.


----------



## TheDarkRose (8. Sep 2011)

Wennd u einen Branch erstellst, der keinen Remote Branch trackt brauchst du auch nicht pullen. Da führst du lokal manuell deine merges/rebase aus.

Wenn du einen Brnach erstellst aus einen Remote Branch, dann wird der Pull auf den remote Branch bezogen, denn du da ausgewählt hast.


----------



## freez (8. Sep 2011)

TheDarkRose hat gesagt.:


> Wennd u einen Branch erstellst, der keinen Remote Branch trackt brauchst du auch nicht pullen. Da führst du lokal manuell deine merges/rebase aus.



D.h. wenn die anderen Teammitglieder auch mit dem Branch arbeiten sollen, muss ich zwangsläufig von "remote tracking/master" branchen, damit ich die Änderungen des Teams per pull rein bekomme????


----------



## TheDarkRose (8. Sep 2011)

Ähm nein. Dann bekommst du ja nur die Änderungen vom Master mit. Wenn mehre Leute an einem Branch arbeiten, dann muss ein gleichnamiger auch remote vorhanden sein. Von diesem trackst du dann. Wenn du Änderungen von Master übernehmen willst, aktulisierst du diesen, und machst lokal ein merge vom master in den aktuellen.


----------



## freez (8. Sep 2011)

Also, normalerweise habe ich es so mitbekommen (Vorgehensweise aus meiner Sicht):
1. branch vom local/Master "neuerBranch"
2. Push to Upstream überträgt "neuerBranch" ins zentrale Repo
=> Ich kann "neuerBranch" nicht pullen, da pull Strategy auf "none" beim Branching
=> Meine Teammitglieder sehen "neuerBranch" und können von diesem branchen ... danach funktioniert auch pull, da Strategy auf Merge/rebase gesetzt wurde

Damit habe ich ein Problem, da ich nicht pullen kann ... meine Teammitglieder aber schon


----------

