Seite 1 von 1

Git - Unterschiedliche Ergebnisse nach Merge

Verfasst: 04.05.2017, 09:55
von Tiles
Hey,

Ich habe hier ein Problem mit Merge. Ich habe für mein Bforartists Repo einen Branch in den ich in regelmässigen Abständen die neueste Blender Version reinmerge. Dass es da Konflikte gibt ist normal. Die muss man dann eben resolven. Und darum geht es hier nicht.

Mir machen die Sachen Kummer die eigentlich gar keinen Konflikt haben dürften weil sie eigentlich nach einem Merge identisch sein müssten. Dafür macht man ja Merge. Um die Änderungen des anderen Repos einzupflegen.

Wir haben zum Beispiel den Ordner Cycles nie angelangt, und darin nie Dateien geändert. Sprich der Merge müsste den Inhalt im Bforartists Repository eigentlich identisch zum Inhalt im Blender Repository halten. Tuts aber nicht. Ich bekomme unterschiedliche Inhalte. Ich habe nicht vergessen zu fetchen oder so. Das mache ich immer wenn ich da dran bin. Beide Repos werden erst mal auf den neuesten Stand gebracht, die Libs geupdatet, und alles gefetcht was nur zu fetchen ist. Aber der Inhalt im Bforartists Repository ist nach dem Merge eben anders als im Blender Repository. An Stellen wo es eigentlich gleich sein sollte.

Das hat sich jetzt im Laufe der Zeit zu ein paar hundert Dateien aufgehäuft. Die eigentlich gleich sein müssten, es aber nicht sind. Und so langsam sollte ich da doch mal rausfinden was da schief läuft.

Im Detail:

Den Blender Master habe ich seinerzeit mit git remote add blender git://git.blender.org/blender.git zum Bforartists Repo geaddet. Nicht viel was man hier falsch machen könnte.

Bevor ich einen neuen Merge mache wird das Blender Repo gefetcht, und die Libs auf den neuesten Stand gebracht. Dann im Bforartists Repo auf meinen Mergebranch gewechselt. Dann mit Tortoisegit alles gefetcht, also - all - . Die Git Konsole streikt beim fetchen. Ich habe nie rausgefunden wieso. Deswegen über Tortoisegit. Ist auch bequemer. Als nächstes kommt git merge blender/master . Der Teil passiert in der Konsole. Und das wars dann auch schon. Denn dann gehts ans Konflikte lösen. Die Stellen die wirklich einen Konflikt haben werden einem dann ja angemahnt. Der Teil geht auch recht bequem über Tortoisegit.

Und danach müsste eben zum Beispiel der Cycles Ordner im Bforartists Repository identisch sein mit dem Cycles Ordner im Blender Repository. Denn den haben wir wie gesagt nie angelangt. Und das Blender Repo ist auf Master. Und gemerged haben wir auch den Master. Ist er aber nicht. Was sich diesmal wenigstens beim kompilieren bemerkbar gemacht hat. Cylces wollte nicht kompilieren. Und als ich dann die zwei Cycles Ordner mittels Meld verglichen habe habe ich das grosse Kotzen bekommen. Und als ich dann damit die zwei Repos verglichen habe noch viel mehr ...

Ich bin einfach ratlos was hier passiert. Jemand eine Idee was hier schiefläuft? ^^

Re: Git - Unterschiedliche Ergebnisse nach Merge

Verfasst: 04.05.2017, 18:07
von Tiles
Ein Schritt weiter. Ich habe nun das Blender Repository komplett neu geklont. Und das Ding hat einen komplett anderen Inhalt als mein vorheriges Repo das ich mit Fetch geupdatet habe. Da scheint also schon mal eine Fehlerquelle zu liegen.

Frage, wie kann es kommen dass ein Repo mit Fetch einen anderen Inhalt hat als das neu geklonte Repo? Ich dachte Fetch bringt das Repo auf den neuesten Stand?

Re: Git - Unterschiedliche Ergebnisse nach Merge

Verfasst: 04.05.2017, 18:52
von Tiles
Kann mich mal bitte jemand paddeln? Ich muss doch auch pullen, nicht nur fetchen :P

Damit dürfte das Rätsel wohl denn auch gelöst sein. Wenn ich nur fetche wird das Repository nicht geupdated. Dazu brauch es Pull. Ich glaube Git und ich werden nie Freunde ^^

Re: Git - Unterschiedliche Ergebnisse nach Merge

Verfasst: 06.05.2017, 02:27
von CrystalCoder
Fetch ist dazu da den Stand des Repositories abzurufen, das stimmt also schon so. So Sachen wie alle neuen remote Branches werden damit lokal sichtbar. Pull ist übrigens nichts anderes als ein Fetch + Merge, nur als einzelner Befehl.
Manchmal arbeitet man an einem Branch und will nur auf einen anderen remote Branch wechseln, dessen existenz im lokalen Repo aber noch nicht bekannt ist. In solchen Fällen braucht man fetch, wenn der Remote branch nicht von dem aktuellen abzweigt, sondern auf höherem Level. Ein Pull reicht dann nämlich nicht aus, solange man nicht lokal vorher auf den entspr. branch wechselt der sich remote nochmal verzweigt.

Beispiel
Die Branch Struktur sieht wie folgt aus:

Code: Alles auswählen

master -> featurebranch_a -> teilfeature_a_1
master -> featurebranch_a -> teilfeature_a_2 // Hier wird gerade dran gearbeitet
Erstellt jetzt jemand den Branch "featurebranch_b" vom master. Dann kann man so oft in "teilfeature_a_2" pullen wie man will, man wird den "featurebranch_b" lokal nicht bekommen (vielleicht doch über irgendwelche settings, ich gehe mal vom standard aus). Um den doch zu bekommen macht man entweder "git fetch" oder "git checkout master && git pull".

Re: Git - Unterschiedliche Ergebnisse nach Merge

Verfasst: 06.05.2017, 08:54
von Tiles
Wieder was gelernt. Danke :)