Ich habe jetzt ungefähr einen ganzen Tag lang versucht, eine einfache Zusammenführung zwischen einer Funktion und Entwicklung zu machen.Zusammenführen von Zweig, der keine Konflikte zum Auflösen erzeugt
Grundsätzlich alles, was ich will, ist in der Lage sein, manuell alle Konflikte von Feature in Entwicklung zu vereinen, so dass ich die neue Funktion ohne zu zerstören bekommen kann.
Hier sind die Dinge, die ich habe versucht, so weit
git checkout develop; git merge feature
git checkout feature; git merge -s ours develop
git checkout feature; git merge -s recursive -X ours develop
git checkout develop; git merge -s recursive -X theirs feature
git checkout develop; git merge -s recursive -X theirs feature
git checkout feature; git merge -s resolve develop
In all diesen Fällen entweder Zweig fast vollständig die andere außer Kraft setzt. Ich habe nicht die Möglichkeit, Konflikte in Dateien manuell zusammenzuführen.
mergetool wird für einige Dateien aufgerufen, Unterschiede in einer Datei werden jedoch nicht erkannt. Es sollte beachtet werden, dass diese Datei vor einiger Zeit in die Entwicklung integriert wurde. Dateien, die in devel gelöscht wurden, sind immer noch im Feature vorhanden, aber mit einer 'orig'-Erweiterung. Dies ist das Nächste, das ich bisher zum Synchronisieren beider Zweige erreicht habe, aber um den Preis, dass es nicht einfach ist, wo das Merkmal abzweigt.
git checkout develop; git rebase feature
gibt eine Reihe von Optionen, um Dateien zu löschen oder zu halten und dann zum Fehler: file not found Continue merging other unresolved paths (y/n) ? y
ich noch haben versucht, Rosinen herauszupicken oder Bäume verwaisen. Vielleicht liegt die Lösung da?
Ist es möglich, dass ich einige Dateien gelöscht und neu erstellt habe und deshalb versucht git nicht einmal, Zweige zu kombinieren?
Muss ich jedes Mal, wenn ich ein neues Feature hinzufüge, manuell zusammenführen? Es scheint schwierig zu sein Git - how to force merge conflict and manual merge on selected file
Ich weiß, ich habe irgendwo versaut, aber ich kann nicht herausfinden, wo oder was ich falsch mache. Ich könnte nur alle Dateien manuell bearbeiten, die nicht geändert werden, aber das würde den Zweck der Verwendung von Git vereiteln.
Wo bin ich falsch gelaufen? Wie kann ich diese Situation beheben (ohne Dateien manuell bearbeiten zu müssen)? Und was soll ich nächstes Mal anders machen?
P.S. Für diejenigen, die neu sind zu git und erleben ähnliche Probleme beim Lernen, wie transformative Funktionen wie Merge und Rebase git reflog feature-name
und git reset --hard [email protected]{n}
zu verwenden sind unschätzbare Befehle. (Verwenden Sie immer --hard mit höchster Vorsicht, da lokale Änderungen verworfen werden)
EDIT: Während ich immer noch nicht weiß, warum das passiert ist VonC bot eine gute Stop-Gap-Lösung.
Für alle, die die Art und Weise Sie von einem lokalen Zweig zu einem neuen lokalen Ordner Blick auf diesen Beitrag Kasse fragt sich: https://stackoverflow.com/a/16493707/6419701
Die Art, wie ich eine Zusammenführung durchgeführt mit der ausgezeichneten meld tool für ubuntu ist die Syntax: meld folder1 folder2
Hier sind 2 andere wirklich nützliche Befehle, die ich beim Experimentieren benutzt habe: git rebase --abort und git merge --abort – yosefrow