2016-05-05 18 views
0

Nehmen wir an, ich habe eine MASTER und DEV Zweige, eine mit der stabilen/freigegebenen Version (Master) des Codes, die andere unstable (dev) mit unfertigen Arbeiten in Arbeit.Gibt es eine geeignete Möglichkeit, Git-Commits selektiv zu entfernen?

Ich fing an, eine Testsuite zu programmieren, die von DEV abzweigt, die nun in den Master aufgenommen (oder "freigegeben") werden sollte.

Das Problem ist, dass der Zweig für eine Weile mit DEV aktualisiert wurde, und jetzt gibt es gemischte Commits von anderen Zweigen, die nicht mit MASTER zusammengeführt werden sollten.

Die Commits sind ordnungsgemäß markiert und wir wissen genau, was sie sind.

Der neue in Release einzufügende Code ist Teil einer Testsuite, daher ändert sich der Quellcode nicht, daher sollte es kein größeres Problem sein, alle unerwünschten Änderungen/Commits aus dem Quellcode rückgängig zu machen .

Die Frage (n) sei:

Gibt es eine vordefinierte Methode, dies zu tun? Und wo ist diese Methode, wenn überhaupt?

Ich kann ein wenig über Git nachforschen, um "meinen Weg" zu finden, um dies sicher zu tun, aber es klingt wie ein klassischer Fall von etwas, was wahrscheinlich in jedem Standard-Entwicklungsprozess passieren wird, und nach meiner Erfahrung gibt es es bereits eine vordefinierte Methodik, die von ehemaligen (und heroischen) Entwicklern auf der Suche nach einer soliden Entwicklungsmethodik entwickelt wurde.

Wenn keine Methodik verfügbar oder bekannt ist, wäre jeder Rat zu schätzen.

+0

Ein wenig mehr Details und bessere Frage Aussage wäre viel einfacher zu beantworten. Angesichts der Art und Weise, in der die Frage gerade gestellt wird, ist es schwer zu verstehen, was Sie brauchen, mit – TheGeorgeous

+0

Welchen Teil Sie nicht verstehen? Wenn Sie genauer sein könnten, kann ich die Details erweitern oder ein Beispiel geben. Wie auch immer, ich weiß jetzt, dass ich nach Rebasing frage und wie man rebase. –

Antwort

1

Sind Sie OK mit der Änderung der Geschichte Ihrer Branche? Wenn ja, kann ich eine interactive rebase Ihrer Niederlassung empfehlen.

git rebase -i <commit_hash> 

Der Commit-Hash ist das erste Commit, das Sie in Ihrer Zweigstelle gemacht haben. Sie können die Commits auswählen, die Ihnen wichtig sind, und diejenigen überspringen, die Sie nicht möchten (löschen Sie einfach die Zeile, wenn Sie das Commit nicht wünschen). Nach dem interaktiven Rebase haben Sie einen Zweig, der nur die Commits enthält, die Sie zu Master zusammenführen möchten.

Und in Zukunft sollten Sie vorsichtig sein, wenn Sie Code in Ihrer Zweigstelle einfügen, den Sie nicht mit Ihrer Zweigstelle veröffentlichen möchten, damit Sie diese zusätzliche Arbeit vermeiden können.