git log показує лише один ідентифікатор коміту


78

Мені потрібна допомога. Можна показати лише один ідентифікатор коміту? Оскільки git log -3 показує журнал з 1 - 3, я просто хочу показати лише 3. Яка можлива команда підійде для нього?

Я використовую команду

       git log -3 --pretty=format:"%h"

результат є

       ffbef87
       cf0e073
       1c76c5d

Я хочу відобразити лише 1c76c5d .

Відповіді:


71

Ви можете використовувати git show посилання на третього батька з поточного коміту (тобто на другого предка з HEAD). Також git showприймає той самий рядок формату, що і git log:

git show HEAD~2 --pretty=format:"%h" --no-patch

Оновлення ( 01.12.2016 )

Ще кращим способом буде використання команди сантехніки з можливістю виведення скороченого (7 символів) коміту SHA-1:rev-parse --short

git rev-parse --short HEAD~2

Або ви також можете вказати точну тривалість фіксації SHA-1:

git rev-parse --short=4 HEAD~2

коли я використовую git show head ~ 3 --pretty = format: "% h" --no-patch, він пише fatal: неоднозначний аргумент 'HEAD ~ 3': невідома редакція або шлях не в робочому дереві. Використовуйте '-', щоб відокремити шляхи від версій, наприклад: 'git <command> [<revision> ...] - [<file> ...]'
rkevx21

Чи може це бути head~2першим комітом у вашій історії?
Enrico Campidoglio

Щоб посилатися на коміт у своєму питанні, вам потрібно використовувати head~2.
Enrico Campidoglio

1
@KasunSiyambalapitiya Тому що git showтакож виводить різницю, пов'язану з комітом (тобто патчем ), але нас це не цікавить у цьому випадку.
Enrico Campidoglio

2
@GitSyncApp --no-patchпридушує різницю у вихідних даних git show.
Enrico Campidoglio

15

Для цього існує інструмент:

git log -3 --pretty=format:"%h" | tail -n 1

Ви можете включити nсимволи хешу (замість типових) із таким прапором:

--abbrev=n 

Відповідні частини Філософії Unix

1) Нехай кожна програма добре робить одне. Щоб зробити нову роботу, будуйте заново, а не ускладнюйте старі програми, додаючи нові «функції».

2) Очікуйте, що результат кожної програми стане входом для іншої, поки невідомої програми. Не захаращуйте вихід сторонніми відомостями. Уникайте строго стовпчастих або двійкових форматів введення. Не наполягайте на інтерактивному введенні.

... [тобто]

  • Напишіть програми, які роблять одне і роблять це добре.
  • Напишіть програми для спільної роботи.

https://en.wikipedia.org/wiki/Unix_philosophy


8

Оскільки принаймні git версії 2.3.8, ви можете використовувати --skipопцію:

   git log -1 --skip 2 --pretty=format:"%h"

Не впевнений, які попередні версії git підтримують --skip.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.