2016-11-02 2 views
0

Ich hatte Zweig A, der eine Menge Code enthielt und um das Zusammenführen zu erleichtern, musste ich ein großes Feature auskratzen - das heißt, ich erstellte einen Commit, der einige der neuen Dateien löschte. Auf diese Weise wurde Zweig B geschaffen. B wurde zusammengeführt, um Zweig zu entwickeln, und entwickelte weitere Änderungen.Git - Ignorieren eines einzigen Commits

Jetzt möchte ich Zweig A wieder besuchen und zusammenführen, um es zu entwickeln. Abkratzen war in einem einzigen Commit. So würde Ich mag zu

git fetch origin develop 

und alle Commits fusionieren aber eine gewisse commit (Ich fusionierte alle zum Löschen verpflichtet bis zu begehen, aber ich möchte auch nach dem Löschen alle Commits verpflichten fusionieren [gibt es keine erwarteten Konflikte ]).

Fazit:

B = A + (Löschen Festschreibung)

= develop B + commit1 + commit2 + ... + commit [n]

Ich möchte zu erstellen:

A‘= entwickeln - Löschen begehen

Gibt es eine Möglichkeit, eine negierende Commit zu erstellen und diese möglicherweise zu speichern? Dann kann ich .

Wie kann ich das tun?

+3

Haben Sie git revert in Betracht gezogen? –

+0

Ja. Das hat den Job gemacht. Vielen Dank. Git zurück user967710

Antwort

2

Angenommen, Sie haben die Zweigstellen A, B und develop in Ihrem lokalen Git-Repository. Um enthalten zu haben develop alle Commits mit Ausnahme der Groß Löschen begehen, gehen Sie folgendermaßen vor: get

git checkout develop 
git rebase -i A 

Sie werden dann einen Bildschirm, der Ihnen eine Liste aller Commits seit dem Leiter der Niederlassung A gibt. Löschen Sie die Zeile mit dem Commit, das Sie nicht möchten, und speichern Sie dann die Datei (normalerweise ist die Schnittstelle in vi, so wird die Eingabe :wq gespeichert und beendet. Weitere Informationen finden Sie in der Dokumentation vi). Sobald Sie das getan haben, wird der Zweig develop nun alle Commits außer der großen Löschung haben. Machen Sie sich jedoch keine Sorgen, denn B wird immer noch den Löschbefehl haben, und Sie können immer zu ihm zurückkehren, indem Sie den Zweig B auschecken, wenn Sie möchten.

Vorbehalte: Sie können am Ende mit einem Konflikt oder anderen als Ergebnis dieser Operationen enden. Außerdem gibt es keine Garantie dafür, dass der Code tatsächlich funktioniert. Git ist ein Textwerkzeug, kein "Code" -Werkzeug per se.