Дізнайтеся, який комітет зараз перевіряється в Git


157

Я в середині git bisectсесії.

Яка команда з'ясувати, на якому комітеті (хеш SHA1) я зараз перебуваю? git statusне забезпечує цього.

Редагувати: я думаю, що дзвінки git logта перегляд першого запису працює?

Відповіді:


173

У вас є щонайменше 5 різних способів перегляду комісії, яку ви зараз перевірили, у вашій робочій копії під час git bisectсеансу ( зауважте, що параметри 1-4 також працюватимуть, коли ви не виконуєте бісект ):

  1. git show.
  2. git log -1.
  3. Підказка Bash.
  4. git status.
  5. git bisect visualize.

Я детально поясню кожен варіант нижче.

Варіант 1: git show

Як пояснюється в цій відповіді на загальне питання про те , як визначити , які здійснюють Ви в даний час витягнута ( а не тільки під час git bisect), ви можете використовувати git showз -sпараметром для придушення виходу патча:

$ git show --oneline -s
a9874fd Merge branch 'epic-feature'

Варіант 2: журнал git -1

Ви також можете просто зробити, git log -1щоб дізнатись, на якому комітеті ви зараз перебуваєте.

$ git log -1 --oneline
c1abcde Add feature-003

Варіант 3: Підказка Bash

У Git версії 1.8.3+ (чи це була більш рання версія), якщо у вас є запит Bash, налаштований так, щоб відображати поточну гілку, яку ви перевірили, у своїй робочій копії, то вона також покаже вам поточну комісію, яку ви перевірили під час сеансу бісектриси або коли ви перебуваєте в стані "відірваної голови". У наведеному нижче прикладі я c1abcdeперевірив:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

Варіант 4: статус git

Так само, як і для версії Git 1.8.3+ (можливо, і раніше, знову не впевнений), біг git statusтакож покаже вам, яку комісію ви перевірили під час біссекта та коли ви перебуваєте в окремому стані HEAD:

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

Варіант 5: візуалізація біт-біта git

Нарешті, хоча ви робите це git bisect, ви також можете просто використовувати git bisect visualizeабо його вбудований псевдонім git bisect viewдля запуску gitk, так що ви можете графічно переглянути, на який ви зобов’язані виконувати, а також які зобов'язання ви позначили як погані та хороші досі. Я впевнений, що це існувало задовго до версії 1.8.3, я просто не впевнений, у якій версії він був введений:

git bisect visualize 
git bisect view # shorter, means same thing

введіть тут опис зображення


Акуратний. Коли я задав питання, що я не був на Git 1.8, і з тих пір я отримав собі zsh право-підказку, яка показує хеш фіксації, я думаю, що це може навіть показувати спеціальний індикатор спеціально, якщо я розбиваю, але у мене немає " t фактично не робив більше рівнозначних з моменту, коли я задав це питання, здебільшого git log -p -S <search>виконує цю роботу.
Стівен Лу

git statusне показує вам ідентифікатор фіксації, якщо ви не знаходитесь у відірваному стані. інакше написано "На гілку все ". git showпрацює хоча
Кіп

87

Ви можете просто зробити:

git rev-parse HEAD

Щоб пояснити трохи далі: git rev-parseце основна команда git для інтерпретації будь-якого з екзотичних способів, за допомогою яких ви можете вказати ім'я комітету, і HEADє посиланням на ваш поточний комітет чи гілку. (У ході git bisectсеансу він вказує безпосередньо на команду ("відокремлену головку"), а не на гілку.)

Альтернативно (і простіше запам’ятати) було б просто зробити:

git show

... що за замовчуванням показує зобов'язання, на яке HEADвказує. Для більш стислої версії ви можете зробити:

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation

3
Якщо ви хочете просто отримати хеш для використання в іншому місці, git rev-parse HEADне потрібно обробляти проти всіх альтернатив сміття.
Нік Т

17
$ git rev-розбір HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

Оновлення:

Як варіант (якщо у вас є теги):

(Добре для іменування версії, не дуже добре для повернення до git.)

$ git описуйте
v0.1.49-localhost-ag-1-g273cf91

Або (як запропонував Марк, перелічивши тут для повноти):

$ git show --oneline -s
c0235b7 Автообертання завантажених зображень на основі орієнтації EXIF

7
Ви попросили SHA1, а не те, що легко запам'ятати. ;-)
Олександр Гладиш

Ця версія дуже корисна, якщо ви хочете перевірити сценарій
Daniele Licitra

12

Якщо ви хочете отримати лише просту інформацію, ви можете отримати це за git showдопомогою --format=<string>опції ... і попросити її не дати вам різниці --no-patch. Це означає, що ви можете отримати вихід у стилі printf, що завгодно, що часто може бути одним полем.

Наприклад, щоб отримати лише скорочений хеш ( %h), ви можете сказати:

$ git show --format="%h" --no-patch
4b703eb

Якщо ви хочете зберегти це в змінній середовища в bash (можливо, люди хочуть зробити), ви можете використовувати $()синтаксис :

$ GIT_COMMIT="$(git show --format="%h" --no-patch)"

$ echo $GIT_COMMIT
4b703eb

Повний список того, що ви можете зробити, є вgit show --help . Але ось скорочений список властивостей, які можуть бути корисні:

  • %H зробити хеш
  • %h скорочено фіксувати хеш
  • %T деревний хеш
  • %t скорочений деревний хеш
  • %P батьківські хеші
  • %p скорочені батьківські хеші
  • %an ім'я автора
  • %ae авторський електронний лист
  • %at дата автора, часова мітка UNIX
  • %aI авторська дата, строгий формат ISO 8601
  • %cn ім'я виконавця
  • %ce електронною поштою виконавця
  • %ct дата читання, UNIX часова мітка
  • %cI дата введення, строгий формат ISO 8601
  • %s предмет
  • %f санізований рядок теми, що підходить для імені файлу
  • %gD перемикач перемикань, наприклад, refs / stash @ {1}
  • %gd скорочений перемикач перемикань, наприклад, приховування @ {1}

Усі ці параметри форматування, але showдля відділення немає нічого .
bvj

2

Використовуйте git show, яке також показує вам повідомлення про фіксацію, а також за замовчуванням до поточного виконуваного файлу, якщо не задано аргументів.

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