История или журнал команд, выполненных в Git

96

Есть ли способ отслеживать команды, которые я использовал в Git под Windows? Я хочу просмотреть все команды, которые я применил в своем репозитории.

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

Просмотр истории коммитов - это одно, но отслеживаются ли они для ведения истории других действий, таких как создание ветки или добавление пульта?

nilMoBile
источник
3
Это немного в сторону, но если вы заглянете внутрь .git/logs, вы увидите историю того, на что указала каждая ветка.
Наюки
1
@Nayuki Поскольку pushing не изменяет состояние локальной ветки, reflogочевидно, что не хранит pushes, поэтому просмотр .git/logs/refs/remotes/*/*- единственный способ увидеть вашу pushисторию.
Кайл Стрэнд

Ответы:

-8

git покажет изменения в коммитах, которые влияют на индекс, например git rm. Он не хранит журнал всех выполняемых вами команд git.

Однако, большое количество GIT команд влияют на индекс в какой - то образом, например, создание новой ветви. Эти изменения будут отображаться в истории коммитов, которую вы можете просмотреть git log.

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

Итак, чтобы ответить на ваш вопрос, git не хранит абсолютную историю выполненных gitвами команд в репозитории. Однако часто можно интерполировать, какую команду вы выполнили, через историю фиксации.

Alex
источник
3
На самом деле, как правильно сказано в ответе ниже, это так. «история» показывает список выполненных команд (с момента установки).
Umesh .A Bhat
2
В оболочках хранятся история, но мерзавец не делает, верно?
Alex
3
@UmeshABhat git historyможет быть полезен, например, для просмотра того, какие команды были выполнены в конкретном клоне .
Кайл Стрэнд
5
git reflogэто то, что вы хотите. См. Ответ ниже.
Chéyo 07
3
@ cp.engr: OP запрашивает историю команд git, а не коммитов git. Этот ответ предлагает вывести команды из коммитов git, что очень сложно и не всегда возможно. git reflogфактически показывает сами команды. Кроме того, кстати, оболочка - это лишь немного более прямой способ вывести команды git, но репозиторий git может быть затронут несколькими оболочками. Лучше спросить у git, какие команды использовались.
комбинатор
184

Вы можете увидеть историю с помощью git-reflog ( пример здесь ):

git reflog
Jweyrich
источник
18
@PauAI git reflog покажет все позиции, за которыми следила ваша HEAD, но на самом деле он не покажет все команды git. Команды Git, которые не двигают голову (например git branch -D my_precious_branch), там не отображаются.
Yonatan
@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

Crmpicco
источник
7

Введите historyсвой терминал. Технически это не мерзавец, но я думаю, что это то, что вам нужно.

СкоттиБлейдс
источник
6

Если вы используете Windows PowerShell, вы можете ввести «git» и нажать F8. Продолжайте нажимать F8, чтобы просмотреть все ваши команды git.

Или, если вы используете cygwin, вы можете сделать то же самое с ^ R.

мамбокинг
источник
В обычном сеансе Windows вы можете использовать клавишу F7, чтобы получить небольшое окно, в котором
отображается
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", чтобы в следующем сеансе была создана новая история.

Если вам действительно нужны очки, я думаю, вы могли бы сделать пакетный файл, чтобы сделать все это, но для меня этого достаточно. Надеюсь, это кому-то поможет.

user65795
источник