2016-04-21 17 views
1

Ich bin mitten in der Rebase Hölle wegen einer verpfuschten git commit --fixup. Ich denke, ich habe die Quelle identifiziert und bin an einem besseren Ort als ich angefangen habe. Wenn ich mir jedoch den git reflog anschaue, sieht diese Folge von 'rebase -i' Zeilen genauso aus wie meine vorherigen verpatzten Versuche.Kann ich dem Reflog eine Zeile hinzufügen?

Kann ich dem Reflog meine eigene Zeile hinzufügen? Sagen Sie etwas, das wie aussehen würde:

$ git reflog mark '== we are not worse off than we started here ==' 
$ git reflog -3 
cb6536f [email protected]{0}: mark: == we are not worse off than we started here == 
cb6536f [email protected]{1}: rebase -i (finish): fixup! foo: baz the widgets 
9db07de [email protected]{1}: rebase -i (pick): fixup! baz: implement widget bazzing 
+0

Der nächste glaube ich denken kann, ist 'git commit --fixup HEAD --allow leer ', obwohl das ein tatsächliches Commit erzeugt, das von selbst auf der nächsten' git rebase -i --autosquash' harmlos verschwinden würde – badp

Antwort

2

Sie können einen neuen reflog Eintrag jederzeit den gleichen Befehl git mit verwenden neue reflog Einträge hinzuzufügen, nämlich git update-ref. Dies ist ein "plumbing" (Skript-orientierter) Befehl, so dass es nicht sehr benutzerfreundlich ist und Sie vielleicht Ihr eigenes kleines Wrapper-Skript oder Alias ​​hinzufügen möchten.

Beispiele:

git update-ref -m 'mark: whatever' HEAD HEAD 
git update-ref -m 'mark: another thing' refs/heads/branch branch 
git update-ref -m 'mark: third thing' refs/heads/branch refs/heads/branch 
hash=$(git rev-parse refs/heads/branch) && \ 
    git update-ref -m 'mark: 4' refs/heads/branch $hash 

Beachten Sie, dass die <ref> (das erste nicht-Optionsargument) muss vollständig ausgeschrieben werden. Das <newvalue> kann alles sein, was zu einem gültigen SHA-1 führt, weshalb der mittlere Befehl der drei Beispiele funktionieren kann, aber aus Sicherheitsgründen ist es am besten, das dritte Formular zu verwenden (genau das <ref> zu wiederholen) oder einen tatsächlichen SHA zu verwenden -1 Hash (viertes Formular), lassen Sie git rev-parse überprüfen, dass dies in der Tat ein gültiger Zweig ist.

(Wenn HEAD verwenden, können Sie die Validierung überspringen, da git kann nicht funktionieren, wenn HEAD kein gültiger Name.)

Verwandte Themen