Історія або журнал команд, виконаних у Git


96

Чи є спосіб відстежувати команди, які я використовував у Git під Windows? Я хочу переглянути всі команди, які я застосував до свого сховища.

Я хочу мати можливість повернутися до історії команд і з’ясувати команду, яка спричинила проблему, якщо така сталася.

Перегляд історії комітів - це одне, але для збереження історії інших дій, таких як створення гілки або додавання віддаленого, чи відстежуються вони?


3
Це трохи в стороні, але якщо ви заглянете .git/logs, ви побачите історію того, на що вказувала кожна філія.
Наюкі

1
@Nayuki Оскільки pushing не змінює стан локальної гілки, reflogочевидно, не зберігає pushes, тому загляд .git/logs/refs/remotes/*/*- це єдиний спосіб побачити свою pushісторію.
Kyle Strand

Відповіді:


-8

git покаже зміни в комітах, які впливають на індекс, наприклад git rm. Він не зберігає журнал усіх команд git, які ви виконуєте.

Однак велика кількість команд git певним чином впливає на індекс , наприклад, створює нову гілку. Ці зміни з’являться в історії комітів, яку ви можете переглянути git log.

Однак є деструктивні зміни, які git не може відстежити, наприклад git reset.

Отже, щоб відповісти на ваше запитання, git не зберігає абсолютну історію gitкоманд, які ви виконували у сховищі. Однак часто можна інтерполювати, яку команду ви виконали, через історію комітів.


2
Насправді, як справедливо згадується у відповіді нижче, це так. "history" показує список виконуваних команд (з моменту встановлення).
Умеш. А Бхат

2
В оболонках зберігаються історія, але мерзотник не робить, вірно?
Алекс

3
@UmeshAB, що git historyбуло б корисно, наприклад, щоб побачити, які команди були виконані в певному клоні .
Kyle Strand

5
git reflogце те, що ти хочеш. Дивіться відповідь нижче.
Чейо

3
@ cp.engr: OP запитує історію команд git, а не комітів git. Ця відповідь пропонує зробити висновок про команди з коміту git, що є дуже важкою роботою і не завжди можливо. git reflogфактично показує самі команди. Крім того, до речі, оболонка - це лише трохи більш прямий спосіб зробити висновок про команди git, але git-репо може торкатися декількох оболонок. Краще запитати git, які команди були використані.
комбінаторіст

183

Ви можете переглянути історію за допомогою git-reflog ( приклад тут ):

git reflog

18
@PauAI while git reflog показував би всі позиції, за якими стежила ваша HEAD, насправді не відображатиме всіх команд git. Команди Git, які не рухають головою (наприклад git branch -D my_precious_branch), не відображатимуться там.
Йонатан

@Yonatan, ти не міг отримати git reflog --all?
комбінаторіст

2
@combinatorist спробувати додати пульт (як ОП дав приклад): git remote add foo bar. він не з'явиться у git reflog --all, оскільки не змінює вказівник HEAD.
Йонатан

git reflogне показує мені команди типу git statusaso., з --allпараметром або без нього .
Лоренц

62

Журнал ваших команд може бути доступний у вашій історії оболонки.

history

Якщо перегляд списку виконаних команд, що пролітають не для вас, експортуйте список у файл.

history > path/to/file

Ви можете обмежити експортований дамп лише показом команд із "git", провівши його grep

history | grep "git " > path/to/file

Історія може містити рядки, відформатовані як такі

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

За допомогою номера ви можете повторно виконати команду зі знаком оклику

$ !518
git status -s

8

Якщо ви використовуєте CentOS або інший аромат Linux, просто зробіть Ctrl+ Rза запитом і введіть git.

Якщо ви продовжуєте натискати Ctrl+, Rце зробить зворотний пошук у вашій історії команд, які починаються зgit


7

Введіть historyсвій термінал. Це технічно не git, але я думаю, що це те, що ви хочете.


6

Якщо ви використовуєте Windows PowerShell, ви можете ввести "git" і натиснути F8. Продовжуйте натискати F8, щоб прокрутити всі ваші команди git.

Або, якщо ви використовуєте cygwin, ви можете зробити те саме з ^ R.


У звичайному сеансі Windows ви можете використовувати клавішу F7, щоб отримати невелике вікно, що надає вам список усіх команд, введених у цьому сеансі
milso

0

Я довідався, що у моїй версії git bash "2.24.0.windows.2" у моїй "домашній" папці під користувачами Windows, у цій папці буде файл ".bash-history" без розширення файлу. Він створюється лише після виходу з bash.

Ось мій робочий процес:

  1. перед виходом з bash введіть "history >> history.txt" [ENTER]
  2. вийти з підказки bash
  3. утримуйте Win + R, щоб відкрити вікно команди "Виконати"
  4. введіть оболонку: профіль
  5. відкрийте "history.txt", щоб підтвердити, що мій текст був доданий
  6. На новому рядку натисніть [F5], щоб ввести позначку часу
  7. зберегти та закрити текстовий файл історії
  8. Видаліть файл ".bash-history", щоб наступний сеанс створив нову історію

Якщо ви дійсно хочете балів, я думаю, ви могли б створити пакетний файл, щоб зробити все це, але це досить добре для мене. Сподіваюся, це комусь допомагає.

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