Git Merge

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Silvio

Betreff: Git Merge

BeitragDo, Aug 15, 2013 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hier gibt es sicher welche, die sich mit Git auskennen, daher frage ich mal.

ich versuche gerade Git zu verstehen und die Grundlagen habe ich verstanden, bloß beim Merge verhält sich git nicht so wie ich es erwarte.

Ich habe in einem repository zwei branches. beide haben die selbe Textdatei mit verschiedenem Inhalt. Wenn ich nun den einen branch auschecke und mit dem anderem mergen möchte, wird einfach wirkürlich der eine branch behalten und der andere wird nicht beachtet. Dabei sollte mir ja git sagen, dass es einen Konflikt gab, weil in 2 Branches Änderungen gemacht wurden an der selben Datei. Am Ende habe ich 2 branches mit dem selben Inhalt. Vorhin hat es mal geklappt, da hatte ich beim mergen noch gesagt "--no-ff" da hat er mir gesagt es gibt einen Konflikt. Ich dachte schon jetzt hab ichs verstanden, dann reproduzier ich die Ausgangssituation, mach ich das selbe nochmal und es geht nicht mehr.
 

Silvio

BeitragDo, Aug 15, 2013 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
okay ich habe glaub selbst herausgefunden, nach stundenlangem Ausprobieren Very Happy

also habe ein master branch mit dem Projekt und einen featurebranch, der schon weiter programmiert wurde. Ich habe nun erwartet, dass wenn ich nun beide merge, dass git mir dann sagt, dass es Unterschiede in den Dateien gibt. Diese gibt es auch, aber da der master branch nicht weiter bearbeitet wurde, überschreibt git einfach den master branch mit dem featurebranch. Hätte in der Zwischenzeit jemand anderes oder ich den Masterbranch verändert, dann merkt git das und sagt mir, dass es Konflikte gibt.

Habe nun 3 Tage gebraucht um Git zu verstehen, aber es lohnt sich.

Xeres

Moderator

BeitragFr, Aug 16, 2013 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau so ist es - wenn Änderungen nicht gleichzeitig auftreten, kann es auch kein Konflikt geben. Wer zum üben einen Provozieren will:
Code: [AUSKLAPPEN]
Xeres@NATHAN ~/Documents/TestRep (master)
$ git checkout -b branchA
Switched to a new branch 'branchA'

Xeres@NATHAN ~/Documents/TestRep (branchA)
$ echo "A" > somefile.txt

Xeres@NATHAN ~/Documents/TestRep (branchA)
$ git add . && git commit -m 'file A'
[branchA 6b20bc9] file A
 1 file changed, 1 insertion(+)
 create mode 100644 somefile.txt

Xeres@NATHAN ~/Documents/TestRep (branchA)
$ git checkout master
Switched to branch 'master'

Xeres@NATHAN ~/Documents/TestRep (master)
$ echo "B" > somefile.txt

Xeres@NATHAN ~/Documents/TestRep (master)
$ git add . && git commit -m 'file B'
[master 2eacadb] file B
 1 file changed, 1 insertion(+)
 create mode 100644 somefile.txt

Xeres@NATHAN ~/Documents/TestRep (master)
$ git merge branchA
Auto-merging somefile.txt
CONFLICT (add/add): Merge conflict in somefile.txt
Automatic merge failed; fix conflicts and then commit the result.

Xeres@NATHAN ~/Documents/TestRep (master|MERGING)
$ git status
# On branch master
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#       both added:         somefile.txt

Xeres@NATHAN ~/Documents/TestRep (master|MERGING)
$ cat somefile.txt
<<<<<<< HEAD
B
=======
A
>>>>>>> branchA

Würde man erst das File mit Inhalt B in Master erstellen und einchecken und dann den neuen BranchA erzeugen, sind die commits linear und können automatisch gemergt werden.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group