2016-08-02 32 views
1

Ich habe zwei Zweige, nennen wir sie "Entwicklung" und "stabil". Die meiste Zeit fusioniere ich von der Entwicklung zur stabilen, aber manchmal muss ich in die entgegengesetzte Richtung zusammenführen. Zum Beispiel jemand ändert ein Skript oder eine Konfigurationsdatei und ich möchte diese Änderungen in meinen Entwicklungszweig bekommen.git verlor Änderungen beim Hin und Her zwischen zwei Zweigen

Die meiste Zeit der Zusammenführung funktioniert gut, aber bei einigen Gelegenheiten bemerkte ich, dass Git versucht, meine letzten Änderungen im Entwicklungszweig auf eine ältere Version aus dem stabilen Zweig zurückzusetzen. Warum würde das passieren? Ich habe mit unserem Guru-Guru gesprochen und er sagt, dass es wahrscheinlich ist, dass er hin und her geht, aber er konnte nicht erklären, wie genau das passiert.

Zum Beispiel mache ich eine Zusammenführung von stabil zu Entwicklung mit --no-commit. Ich schaue mir eine Datei an und sie hat einen kürzlichen Wechsel im Entwicklungszweig und einen älteren Wechsel sowohl in der Entwicklung als auch in der Stabilität. Aber Git besteht immer noch darauf, die neuere Änderung aus irgendeinem Grund umzukehren.

+3

Ich sehe keinen Grund, dass das Zusammenführen von einem Zweig zu einem anderen und dann zurück dieses Verhalten verursachen sollte. In der Tat ist ein solches Verfahren relativ üblich, und ich hatte noch nie Probleme. Gab es jemals Zusammenfügungskonflikte, wenn das passiert? Kannst du ein [MCVE] zur Verfügung stellen? Bitte versuchen Sie es zumindest ein wenig einzugrenzen, und geben Sie dann relevante 'git log'- und' git diff'-Ausgaben ein (natürlich sauber gemacht). –

+0

'git merge --no-commit --no-ff stabile Entwicklung; git merge --abort "gibt" Automatische Zusammenführung ging gut; gestoppt, bevor Sie wie gewünscht "begehen"? –

Antwort

0

Besically um ganzes Problem alle zusammen zu vermeiden, während auf development Zweig läuft

git rebase stable

Was wird es tun, um den Commit-Stack Ihres development Zweig nehmen und beantworten sie ON TOP von stable Zweig. Auf diese Weise erhalten Sie einen aktuellen development Zweig und vermeiden unnötige merge commits.