Warum akzeptiert git update-ref Referenzen, die nicht / refs sind?
Während Befehle wie "git log" unterschiedliche Ausdrücke für denselben Verweis akzeptieren, z. B.
refs/heads/master
heads/master
master
das ist nicht wahr für "git update-ref". Beispielsweis
git ,update-ref master HEAD^
ist nicht dasselbe wie
git update-ref refs/heads/master HEAD^
Der erste Befehl erstellt ein neues ref .git / master (und führt wiederum eine Mehrdeutigkeit in Bezug auf refs / heads / master ein). Nur der zweite Befehl aktualisiert wirklich den Kopf des Meisters. (.git / refs / heads / master)
Warum akzeptiert git update-ref Verweise ohne das Präfix "refs /"? Sollte es nicht mindestens eine Warnung oder eine Befehlszeilenoption geben, um die Erstellung solcher Verweise zu erzwingen?
Es hat ziemlich lange gedauert, bis ich herausgefunden habe, warum
git update-ref master HEAD^
hat nicht wie erwartet funktioniert.