Я проверил некоторый исходный код в GIT с сообщением фиксации «Build 0051».
Однако я больше не могу найти этот исходный код - как мне извлечь этот источник из репозитория GIT, используя командную строку?
Обновить
- Проверено в версиях 0043, 0044, 0045 и 0046 с использованием SmartGIT.
- Проверено 0043 и проверено в версиях до 0051 в другой ветке.
- Снова проверил 0043.
- Теперь 0051 исчез.
Обновить
Исходный код определенно есть, теперь его нужно проверить:
C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date: Fri Aug 19 17:24:51 2011 +0100
20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
C:\Source>
Ответы:
Для поиска в журнале фиксации (по всем веткам) по заданному тексту:
Для поиска актуального содержания коммитов в истории репо используйте:
показать все экземпляры данного текста, имя файла и коммит sha1.
Наконец, в качестве крайней меры, если ваш коммит болтается и вообще не связан с историей, вы можете выполнить поиск самого журнала с помощью
-g
флага (сокращенно--walk-reflogs
:РЕДАКТИРОВАТЬ: если вы, кажется, потеряли свою историю, проверьте,
reflog
как ваша сеть безопасности. Ищите Build 0051 в одном из коммитов, перечисленныхВозможно, вы просто установили
HEAD
для себя часть истории, в которой фиксация «Build 0051» не видна, или вы, возможно, фактически удалили ее. Мерзавец готового reflog статья может помочь.Чтобы восстановить ваш коммит из reflog : выполните git checkout найденного вами коммита (и при желании сделайте его новую ветку или тег для справки)
источник
git grep 'search' $(git rev-list --all)
, попробуйтеgit rev-list --all | xargs git grep 'search'
Я поместил это в мой ~ / .gitconfig:
Затем я могу набрать «git find string» и получить список всех коммитов, содержащих эту строку в сообщении. Например, чтобы найти все коммиты, ссылающиеся на тикет № 33:
источник
--pretty=\"format:%Cgreen%H %Cblue%s%Creset\"
find = log --all --pretty=\"format:%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --grep
. Обратите внимание--all
и на%b
символы. Спасибо @AshleyCoolman заreset
совет.find = log --oneline --name-status -i --grep
Хотя и немного запоздало, есть
:/
специальная нотация для указания фиксации (или ревизии) на основе сообщения фиксации, просто добавьте строку поиска с префиксом:/
, например:Здесь
<message>
может быть сложный шаблон регулярных выражений, состоящий из пробелов, поэтому, пожалуйста, обязательно указывайте / экранируйте при необходимости, например:В качестве альтернативы можно указать начальную точку, чтобы найти ближайший коммит, достижимый из определенной точки, например:
Смотрите: руководство по git-ревизиям .
источник
источник
должен сделать трюк
источник
Попробуй это!
источник
git grep
вместо обычного grep и предоставить--all
флаг для поиска по нескольким веткам.git log --all --grep='Build 0051'
(ответ @ шелхамера)git log -g
. Возможно, вы потеряли историю при перезагрузке, но вы все равно можете проверить журнал, если он не был собран мусором.сначала используйте,
git log --oneline
чтобы найти SHA коммита (Message), затем я использовалgit log --stat 8zad24d
SHA (пример первых пар sha char (8zad24d)), чтобы найти нужную информациюисточник
Эта:
или это:
Команды работают лучше для меня.
источник
Для поиска по всем веткам
Как только вы знаете, какой коммит вы хотите получить
источник
Если изменение не слишком старое, вы можете сделать,
git reflog
а затем проверить идентификатор фиксации
источник