Bessere Möglichkeit, eine GIT-Commit-Nachricht durch kurzen Hash zu erhalten?

Lesezeit: 2 Minuten

Benutzer-Avatar
ehime

Ich erhalte derzeit meine Commit-Nachricht für einen bestimmten Commit-Hash, indem ich Folgendes verwende:

hash="b55da97"
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'

Diese scheinen jedoch äußerst ineffizient zu sein. Gibt es einen intelligenteren oder billigeren Weg, dies zu tun, oder stecke ich mit Grepping und Awking fest?

  • Sie sind schon ziemlich nah dran, begrenzen Sie einfach die Ausgabe auf 1 Commit und verwenden Sie ein anderes –pretty: git log -n 1 --pretty=format:%s $hash

    – Torek

    5. November 2013 um 20:37 Uhr


  • @torek plus eins zu deinem Kommentar und +1 und akzeptiert, wenn du dies als Antwort posten möchtest.

    – ähm

    5. November 2013 um 20:40 Uhr

Benutzer-Avatar
Torek

git log nimmt (unter anderem):

  • -n num Um die Anzahl der angezeigten Commits zu begrenzen: Wählen Sie 1 (und falls num 9 oder weniger ist, können Sie einfach schreiben -numsomit, -1kurz)
  • --pretty=format:string with directives um das Protokollausgabeformat zu ändern. Das %s Direktive bekommt das Commit “subject”, was Sie auch bekommen oneline.

Somit: git log -n 1 --pretty=format:%s $hash (oder git log -1 --pretty=format:%s) wird hier den Trick machen.

Eine vollständige Liste der Formatanweisungen finden Sie in der Git-Log-Dokumentationunter “SCHÖNE FORMATE” (etwa auf halber Höhe).

Abhängig davon, wie viel von der Commit-Nachricht Sie tatsächlich möchten, gibt es mehrere hübsche Formatbezeichner, die Sie verwenden können:

      ·  %s: subject
      ·  %f: sanitized subject line, suitable for a filename
      ·  %b: body
      ·  %B: raw body (unwrapped subject and body)

Also sowas wie git log -1 --pretty=format:%b <hash>oder verwenden Sie einen der anderen Spezifizierer (glaube ich %s ist wahrscheinlich näher an dem, was Sie jetzt tun). Das -1 Grenzen git log zu nur einem Commit, anstatt durch den Verlaufsbaum zu gehen.

Ich mag es, wenn die wichtigen Dinge in einer einzigen Zeile abgelegt werden … Folgendes verwende ich, aufgebaut aus anderen Antworten auf dieser Seite:

git_log_for_commit.sh

IT=$(git log -1 --pretty=format:"%an, %s, %b, %ai"  $*)
echo "$IT"

Ausgang

jdoe, WORK1766032 - Added templating engine, WIP, 2013-08-15 14:25:59 +0000

Eine noch kürzere Antwort als hier aufgeführt ist

git log --pretty=oneline {your_hash} | grep {your_hash}

Dies kann es kurz machen

git log --pretty=oneline ${hash} | awk '$0~var {print $2}' var="${hash}"

1256460cookie-checkBessere Möglichkeit, eine GIT-Commit-Nachricht durch kurzen Hash zu erhalten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy