2016-11-08 5 views
1

Ich spielte mit meinem Git Repository und machte eine ganze Reihe von Commits früher zu Meister Zweig. Jetzt habe ich gemerkt, dass es ein bisschen zu laut ist, und werde all das zu einem einzigen Commit verschmelzen.Git Squash alle Commits im Ursprung/Master in Einzel Commit innerhalb Ursprung/Master

102381 commit z 
.... 
176232 commit a 
891273 initial commit 

einfach

198273 initial commit (after rebase) 
891273 initial commit 

Ich habe umsah und viele der Lösungen scheint um zu zerquetschen. Leider ist das möglich, da sich bereits alles auf dem Masterzweig befindet.

Einer meiner ersten Gedanken war zu

  1. eine Niederlassung erstellen von 891.273 # begehen
  2. Squash alles vom Meister in die neue Niederlassung
  3. den alten Meister löschen, und ersetzen Sie es mit diesem neuen Zweig

Ich bin mir nicht sicher, ob dies ein guter Weg ist, es zu tun; Ich dachte, es wäre klüger, ein paar Ideen, Anleitungen und Diskussionen darüber zu bekommen.

Antwort

1

Finden Sie eine einfache Möglichkeit, Ihre Anforderung zu erreichen:

  1. git checkout –b branch1. Erstellen Sie einen neuen Zweig von commit # 891273,

  2. git rebase –i master

  3. für Editor zur Eingabe wartet (Typ i Eingang starten):

    pick 176232 commit a

    squash ****** commit b

    ......

    squash 102381 commit z

Anmerkung: Typ 'Esc' Taste Eingabe zu stoppen

  1. Eingang :wq den Editor zu verlassen, dann werden Sie feststellen, was Sie wollen

Hinweis: Beim Quetschen von commit a to z kann es zu Konflikten kommen.Sie müssen die Zieldatei beheben, und verwenden Sie git add Dateiname, git --continue rebase

Referenz weiterhin Quetschen: https://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit

2

Sie können einfach einen Soft-Reset auf 891273 durchführen, gefolgt von einem Commit. Dadurch wird die Verzweigung auf das erste Festschreiben zurückgesetzt, wobei das Zurücksetzen der Änderungen im Bereitstellungsbereich beibehalten wird, die Sie im nächsten Schritt festschreiben können.

git reset --soft 891273 
git commit -m 'Second Commit' 

Auf diese Weise haben Sie zwei Commits in Ihrem Repository.

Verwandte Themen