2016-04-27 19 views
0

Ich habe meine Code-Entwicklung in meiner lokalen Zweigstelle gemacht und Commit-Kommentare wie gezeigt (temporär, temp2) hinzugefügt, wobei ich denke, dass ich die Commit-Nachricht neu erstellen und ändern kann, bevor ich zum Remote-Repository dränge. Aber nach diesen beiden Commits habe ich aus einem Remote-Repository gezogen und bin mit meiner lokalen Niederlassung verschmolzen. Aber danach kann ich kein spezifisches Commit vor dem Zusammenführen rebasen, so dass ich die Commit-Nachricht bearbeiten kann. Ich benutze SourceTree als Client für GIT. Gibt es eine Möglichkeit, diese Commit-Nachricht zu bearbeiten, bevor ich drücke?Änderungskommentare in GIT

enter image description here

enter image description here

+2

Ich vermeide all diese ausgefallenen GUIs selbst: Sie füllen eine dringend benötigte Lücke. (Ich brauche meine Lücke!) Von der Kommandozeile aus kann man oft 'git rebase -i' für Fälle wie diesen ausführen. Ich kann nicht genug von dem Diagramm in Ihrem Clip sehen, um festzustellen, ob Sie einen komplexeren Befehlszeilenbefehl benötigen, aber auf jeden Fall hilft Ihnen das nicht in der GUI .... – torek

+0

Sie könnten die Kommentare für ändern das letzte Commit mit 'git commit --amend'. Es akzeptiert nur die Spitze des aktuellen Zweigs, der in Ihrem Fall "merge related" ist. Alternativ könnten Sie die letzte Zusammenführung zurücksetzen, Ihre Commits auf die ursprüngliche Remote-Zweigstelle rebasieren. –

+0

@torek Ich habe das versucht, aber es sagt, dass es die Rebase nicht auf bestimmte Commits anwenden kann (das ist der entfernte Zweig (dieser Zweig) Ich fusionierte)) – kernel

Antwort

1

Wenn Sie eine interaktive rebase tun, können Sie die Commit-Nachrichten umformulieren. Es könnte ein Weg sein, es mit Ihrem gui zu tun, was Sie über die Befehlszeile verwenden können:

$ git rebase -i origin/master 

wird

‚wählen‘ Ersetzen in einem Code-Editor eine Liste Ihrer Commits Anzeige von ‚reword 'um die Nachricht zu bearbeiten. Sie könnten auch ‚Squash‘ begehen die zweite in die erste,

+0

Ich habe versucht, aber es heißt, dass es nicht in der Lage, die Rebase auf bestimmte Commit, die Remote-Zweig ist (dieser Zweig, den ich zusammengeführt) anwenden. – kernel

1

Eine Lösung wäre verpflichtet werden Zurückspulen zurück, die Bearbeitung in einer Weise, die Sie wünschen und Rosinenpickerei die Upstream diejenigen:

  1. Kasse temporary begehen

    git reset --hard d19d86b 
    
  2. bearbeiten Commitnachricht

    git commit --amend 
    
  3. Kirsche-Pick temp begehen und ändern:

    git merge master_integration 
    
  4. Wenn Sie dev_ProgramView brauchen commit - es fügen auch:

    git cherry-pick 68a0bcd 
    
    git commit --amend 
    
  5. mit master_integration Merge

    git cherry-pick dev_ProgramView 
    

Alle Commit-Hashes und Zweignamen stammen aus Ihrem Bild.

+0

Dies ist ziemlich genau der richtige Weg, mit einem Vorbehalt.Als Sicherheitsnetz würde ich dem Commit 'adb321a' einen * neuen * Zweig oder Tag-Namen zuweisen, auf den aktuell der Branch-Name' dev_ProgramView' zeigt. Ich kann aus den Bildern nicht erkennen, welcher Zweig aktuell ist (oder tatsächlich war) (bevor der "Rebase-i" gestartet wurde). Hinweis für das OP: Stellen Sie sicher, dass Sie "git rebase --abort" verwenden, um die laufende oder fehlgeschlagene Rebase abzubrechen, bevor Sie eines der oben genannten Schritte ausführen. – torek

+0

@torek danke für das Hinzufügen! Ein anderer Weg wäre, sich auf "git reflog" zu verlassen, wenn man sich in der Masse der Commits verliert. – manzur