Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Git merge Branch A in Branch B

Als Bespiel wird der Branch 3.12 in den Branch 3.13 gemerged.

Zum Testen des merge:

Codeblock
$ # Testmerge ohne das Ergebnis einzutragen
$ git merge --squash 3.12
$ # Gab es Konflikte?
$ git status
# Auf Zweig 3.13
# zum Eintragen bereitgestellte Änderungen:
#   (benutzen Sie "git reset HEAD <Datei>..." zum Herausnehmen aus der Bereitstellung)
#
#       geändert:   nuclos-client/src/main/java/org/nuclos/client/dbtransfer/DBTransferExport.java
#       geändert:   nuclos-client/src/main/java/org/nuclos/client/dbtransfer/DBTransferImport.java
#       geändert:   nuclos-client/src/main/java/org/nuclos/client/livesearch/LiveSearchController.java
#       geändert:   nuclos-client/src/main/java/org/nuclos/client/livesearch/LiveSearchSettingsPanel.java
#       geändert:   nuclos-client/src/main/java/org/nuclos/client/main/SimpleSplash.java
#       geändert:   nuclos-common/src/main/java/org/nuclos/common/dal/vo/Delete.java
#       geändert:   nuclos-common/src/main/java/org/nuclos/server/livesearch/ejb3/LiveSearchFacadeRemote.java
#       geändert:   nuclos-installer/build.xml
#       neue Datei:   nuclos-installer/conf/3rdparty/apache-tomcat-7.0.39.zip.SHA1
#       neue Datei:   nuclos-installer/conf/3rdparty/postgresql-9.2.4-1-linux-x64.run.SHA1
#       neue Datei:   nuclos-installer/conf/3rdparty/postgresql-9.2.4-1-linux.run.SHA1
#       neue Datei:   nuclos-installer/conf/3rdparty/postgresql-9.2.4-1-osx.dmg.SHA1
#       neue Datei:   nuclos-installer/conf/3rdparty/postgresql-9.2.4-1-windows-x64.exe.SHA1
#       neue Datei:   nuclos-installer/conf/3rdparty/postgresql-9.2.4-1-windows.exe.SHA1
#       geändert:   nuclos-installer/src/main/java/org/nuclos/installer/Constants.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/dbtransfer/TransferFacadeBean.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/dbtransfer/content/EntityFieldNucletContent.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/dbtransfer/content/ImportNucletContent.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/dbtransfer/content/ResourceNucletContent.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/livesearch/ejb3/DocumentHandler.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/livesearch/ejb3/IndexQuery.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/livesearch/ejb3/LiveSearchFacadeBean.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/livesearch/ejb3/LuceneWriter.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/livesearch/ejb3/NuclosCoordinate.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/livesearch/ejb3/NuclosIndexer.java
#       geändert:   nuclos-server/src/main/java/org/nuclos/server/masterdata/ejb3/MasterDataFacadeHelper.java
#       geändert:   nuclos-server/src/main/resources/resources/data/localeresource.json
#
# Nicht zusammengeführte Pfade:
#   (benutzen Sie "git reset HEAD <Datei>..." zum Herausnehmen aus der Bereitstellung)
#   (benutzen Sie "git add/rm <Datei>..." um die Auflösung zu markieren)
#
#       von beiden geändert:nuclos-client/src/main/java/org/nuclos/client/eventsupport/EventSupportManagementController.java

$ # Aha, 'Nicht zusammengeführte Pfade' bedeutet Konflikt(e)
$ # Lösung des Konflikts z.B. mit 
$ # git mergetool (siehe unten)

$ # Testmerge zurückrollen
$ git reset --hard HEAD

$ # Wir sind jetzt wieder im Branch 3.13, wie er vor dem Testmerge war...

Test tatsächlich durchführen:

Codeblock
$ # Testmerge ohne das Ergebnis einzutragen
$ git merge 3.12
$ # Gab es Konflikte?
$ git status
[...]

$ # Falls es keine Konflikte gab, ist jetzt der Merge bereits durchgeführt!
$ # D.h. es kann 'gepushed' werden...
 
$ # Konflikte lösen (siehe unten)
$ git mergetool

$ # Merge mit manuell gelösten Konflikten einchecken
$ git commit -s 

Git Konfliktmanagement

Wenn kein fast-forward und kein clean-merge vorliegt, dann gibt es Konflikte, die manuell gelöst werden müssen. Dies ist immer der Fall, wenn sich in den entsprechenden Dateien seit der Zeit, wo sie auseinander gelaufen sind, auf der gleichen Zeile auf beiden Seiten (d.h. bei mir und bei den anderen) nicht-gleiche Änderungen ergeben haben.

...