2013-07-17 9 views
15

Vor einiger Zeit habe ich einen Zweig von meiner master Niederlassung erstellt. Nennen wir es new_feature. Während ich an new_feature arbeitete, folgte der Zweig master seiner normalen Entwicklung. Jetzt, da new_feature bereit ist, in master zusammengeführt zu werden, sehe ich einige Konflikte, alle von ihnen sind in Dateien, die völlig unabhängig von der tatsächlichen neuen Funktion sind (wie einige Konfigurationsdateien und die Likes, die auf master geändert haben). Ich werde die Konflikte manuell lösen, aber ich frage mich, da es eine Situation ist, die ziemlich häufig passiert, wie ich den new_feature Zweig einfach in master zusammenführen könnte, während ich immer die master Version der Dateien im Konflikt behalten würde?Wie bevorzugen Sie Dateien aus einem Zweig während einer Zusammenführung?

Ich bin mir sicher, dass es einfach ist und mit etwas wie "keep version" zu tun hat, aber da es ein ziemlich sensibles Thema ist, würde ich eher bitten als bedauern.

+1

Die Dokumentation beschreibt verschiedene Zusammenführungsstrategien, einschließlich derjenigen, an denen Sie interessiert sind, im Detail. Sie sollten immer in der Lage sein, sich zu erholen und es erneut zu versuchen, wenn etwas schief geht, also wird auch ein bisschen Experimentieren nicht schaden. –

+0

Überprüfen Sie diese Frage SO: http://StackOverflow.com/Questions/528659/Git-Automatic-Conflic-Resolution –

+0

Dank @CarlNorum, beziehen Sie sich auf die rekursive Strategie mit Option unserer? Ich bin nicht sicher zu verstehen, ob diese Strategie den ganzen Baum als Master hält. – Bastian

Antwort

17

Wie im Kommentar erwähnt, gibt es verschiedene Strategien in der Dokumentation. Sie können sie auch hier finden: http://git-scm.com/docs/git-merge

Sie suchen entweder git merge -s recursive -X ours oder git merge -s recursive -X theirs abhängig von der Branche, in der Sie sich befinden. Seien Sie vorsichtig damit, da Sie versehentlich Änderungen an Ihren Dateien aus dem anderen Zweig verpassen können und diese überschrieben werden. Eine andere Methode, die ich wegen mehr Kontrolle bevorzuge, ist git checkout <other-branch> -- <list of files>. Auf diese Weise überschreibe ich nicht versehentlich eine Datei mit den falschen Änderungen.

+1

Nur um sicher zu sein, verstehe ich gut, in meinem Fall, wenn ich 'git merge -s recursive -X unser neues_feature' von Master Ich werde die Änderungen von new_feature erhalten, aber die widersprüchlichen Dateien bleiben, wie sie auf Master sind? – Bastian

+0

ja, das ist richtig. – Schleis

Verwandte Themen