Една от най-основните услуги, предоставяни от Git, е историята на проекта. Тъй като Git следи всички промени във файловете, направени в хранилището, той може да предложи много мощни функции за регистриране. Можете да запитвате историята на проекта по много различни начини и можете да извличате и показвате различни данни с помощта на една гъвкава команда.
The git дневник команда е огромна, най-голямата от всяка обикновена Git команда. Ръководството му е с дължина над 2500 реда. За щастие, git дневник предоставя голяма част от най-полезното си поведение само от няколко ключови опции.
Основно регистриране с поведението по подразбиране
По подразбиране, git дневник показва обратен хронологичен списък на ангажиментите. Всеки ангажимент включва своя хеш, автор, дата и съобщение за фиксиране:
Командата използва пейджър (например по-малко, повече), за да покаже пълния изход, за да можете лесно да навигирате в резултатите. Можете да конфигурирате Git да използва програма по ваш избор, като например най-пейджър.
Ето някои изходи от git log от хранилището на изходния код на git себе си:
фиксиране 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin / next,
произход / главен, произход / ГЛАВА)
Автор: Junio C Hamano
Дата: Понеделник 14 юни 13:23:28 2021 +0900
Втората партида
Подписано от: Junio C Hamano
Резултатът започва с хеш на фиксиране (670...), последвано от списък с клонове, които в момента сочат към този ангажимент (ГЛАВА -> майстори т.н.)
Следващият ред описва автора на този ангажимент, като посочва тяхното име и имейл адрес.
Пълната дата и час на фиксирането следват на следващия ред.
Накрая се появява пълното съдържание на съобщението за фиксиране. Можете да контролирате повечето от всичко останало, което git log предлага, с опциите на командния ред. Има два основни типа опции:
- Форматиране, което определя как Git показва всеки ангажимент.
- Филтриране, което определя кои ангажименти git дневник включва.
В допълнение към опциите на командния ред, git log приема аргументи, които указват файлове, фиксирания, клонове или други типове препратки. Те прилагат допълнително филтриране.
Форматиране на Git Log Output
Една от най-простите корекции е --една линия опция, която дава много кратък резултат:
git log --oneline
Всеки ред в дневника вече съдържа само съкратен хеш за фиксиране и темата на съобщението за фиксиране. Това е отличен начин за получаване на преглед на последните ангажименти към проекта:
За съжаление, без друг контекст, тази информация не винаги е толкова полезна. Може да ви даде неясно усещане за проекта, но липсват дати и друга полезна информация за авторите и файловете.
Преглед на графика на клон
The --графия опцията ви позволява да визуализирате връзките между клонове. Това е много основно, но може да помогне за разплитането на сложна история.
git log --oneline --graph
Свързани: Как да създадете нов клон в Git
Персонализиран доста изход
Можете да постигнете по-сложно форматиране, като го посочите подробно с помощта на --красива опция. Синтаксисът преминава от много прост към много по-сложен, така че вижте ръководство за пълни подробности.
git log --pretty = кратко
По същество е същото като git дневник без датата или пълното съобщение:
git log --pretty = oneline
Е еквивалентно на git log --oneline.
git log --pretty = по-пълно
Включва много подробности. Той дори разделя автора и ангажиращия се, които на теория могат да бъдат различни хора:
С формат: вариант, можете да предоставите низ, съдържащ каквото искате съдържание, включително заместители, заменени с различни данни. Ето някои примери за запазени места:
- % Н ангажиране на хеш
- % h съкратен хеш на фиксиране
- % реклама дата на автора
- % ар автор дата, роднина
- %с ангажирам тема на съобщението
- % b ангажиране на съобщението
- % p съкратени родителски хешове
Можете да добавите фиксирани знаци към изхода и да го оцветите. Този пример също показва вариация на формата на датата:
git log --pretty = format: '% C (auto)% h [% ad]% s' --date = short
Имайте предвид, че скобите обграждат датата. Независимо от форматирането, което изберете, ако искате изходът да бъде полезен в конвейер или за други форми на обработка на текст, трябва да помислите как да разграничите всяка част от изхода.
Показване на разлики в дневника
Важна подробност при разглеждането на историята на дадено хранилище са самите различия. Те представляват това, което всъщност е променено в кода, в края на краищата! Като начало можете да получите обобщение на промените заедно с всяко използване на фиксиране - краткосрочно:
git log --shortstat
Това добавя ред като:
1 файл е променен, 48 вмъквания (+), 2 изтривания (-)
До дъното на всеки ангажимент. Често ще виждате този вид резюме - например на всички страници в GitHub - и това е полезен начин за бързо преценяване на обхвата на конкретен ангажимент. За по-подробна информация можете да включите пълен изход за корекция (разлики) с помощта на -стр флаг:
git log -p
Филтриране на Git Log Output
Каквото и форматиране да приложите, пак ще видите пълния дневник на всички ангажименти в текущия клон. Въпреки че Git ги разделя на страници, това все още може да бъде много резултат. Следните опции ви позволяват да персонализирате кои ангажименти включва дневникът.
Ограничаване по сума
Ако просто искате да изрежете резултатите, за да покажете последните няколко ангажименти, използвайте - [номер] синтаксис:
git log -2
Ограничаване по дата
За да ограничите набора от ангажименти до даден период от време, използвайте --от (--след) и --до (--преди) настроики. Всеки от тях взема дата във формат ISO 8601. Можете да използвате и двете --от или --до самостоятелно или и двамата заедно, за да зададете диапазон. Опциите --след и --преди са синоними.
git log --since = "2021-01-01" --until = "2021-05-01"
Ограничаване по файл
Git log може да се фокусира върху определен файл, а не върху всеки файл във вашето хранилище. Това е чудесно, за да ви помогне да разберете как определен файл се е променил с течение на времето. Просто добавете името на файла в края на вашата git команда:
git log filename
Ще видите само тези ангажименти, които са засегнати име на файл.
Разлики между клонове
Може да имате някои уникални изисквания, когато преглеждате дневника на клон. Например, вместо да видите цялата история, може просто да искате да видите какво се е променило в този конкретен клон. Git log може да помогне чрез ref1..ref2 синтаксис. Има три малко различни подхода, които можете да използвате:
- Преглед на ангажименти, които са основно, но не се разклоняват:
git log --oneline произход / клон..изход / главен
- Преглед на ангажименти, които са в клон, но не са основни:
git log - произход на oneline /основен..изход /клон
- Преглед на ангажименти, които съществуват само в клон или главно:
git log --oneline произход / клон...произход / основен
Точно както можете да преглеждате историята между клонове с помощта на ref1..ref2 синтаксис, можете също да преглеждате историята между таговете по същия начин. В края на краищата, както таговете, така и клоновете са типове препратки.
git log --abbrev-commit --pretty = format: '% h% ar% s' v2.32.0-rc3..v2.32.0
Ако подготвяте бележки за изданието за по-голям проект, git shortlog трябва да е първото ви пристанище. Той изготвя списък с автори с теми за ангажиране до тях. Можете да му предадете референтен диапазон, за да ограничите историята по подобен начин до git log:
git shortlog v2.32.0-rc3..v2.32.0
The git show команда е дори по-гъвкав от git дневник. Той може да работи с тагове и други видове git обекти извън историята на фиксиране. Той споделя много опции с git дневник, но наистина ще ви трябва, само ако трябва да разгледате подробностите от по-ниско ниво.
Прегледайте миналото с Git Log
Git log е сложна команда, но можете да се възползвате много от най-основните опции. Преглеждането на историята на хранилището е отличен начин да разберете колко често се случват промени и колко хора ги правят. След като разберете добре историята на даден проект, ще бъдете в чудесна позиция да допринесете сами за него.
Искате да упражните своите кодиращи мускули и да помогнете за проекти с отворен код? Ето как да допринесете за GitHub.
Прочетете Напред
- Програмиране
- GitHub
- Съвети за кодиране
Боби е технологичен ентусиаст, който работи като разработчик на софтуер в продължение на почти две десетилетия. Той е запален по игрите, работи като редактор на отзиви в списание Switch Player и е потопен във всички аспекти на онлайн публикуването и уеб разработката.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!
Още една стъпка…!
Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.