Eu verifiquei algum código-fonte no GIT com a mensagem de confirmação "Build 0051".
No entanto, não consigo mais encontrar esse código-fonte - como extraio essa fonte do repositório GIT, usando a linha de comando?
Atualizar
- Verificado nas versões 0043, 0044, 0045 e 0046 usando o SmartGIT.
- Efetuou check-out de 0043 e fez check-in de versões até 0051 em uma filial diferente.
- Check-out 0043 novamente.
- Agora, 0051 desapareceu.
Atualizar
O código fonte está definitivamente lá, agora é uma questão de conferir:
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>
Respostas:
Para pesquisar o log de confirmação (em todas as ramificações) pelo texto fornecido:
Para pesquisar o conteúdo real das confirmações através do histórico de um repositório, use:
para mostrar todas as instâncias do texto fornecido, o nome do arquivo que contém e o commit sha1.
Finalmente, como último recurso, caso seu commit esteja danificado e não esteja conectado ao histórico, você pode pesquisar o reflog com a
-g
flag (abreviação de--walk-reflogs
:EDIT: se você parece ter perdido seu histórico, verifique
reflog
como sua rede de segurança. Procure a Build 0051 em um dos commits listados porVocê pode simplesmente configurá-lo
HEAD
para uma parte da história na qual o commit 'Build 0051' não é visível, ou você pode realmente tê-lo explodido. O artigo reflog pronto para git pode ser útil .Para recuperar sua confirmação do reflog : faça um checkout git da confirmação que você encontrou (e, opcionalmente, faça uma nova ramificação ou tag para referência)
fonte
git grep 'search' $(git rev-list --all)
, tentegit rev-list --all | xargs git grep 'search'
Coloquei isso no meu ~ / .gitconfig:
Então eu posso digitar "git find string" e recebo uma lista de todos os commits que contêm essa string na mensagem. Por exemplo, para encontrar todos os commits que fazem referência ao ticket # 33:
fonte
--pretty=\"format:%Cgreen%H %Cblue%s%Creset\"
find = log --all --pretty=\"format:%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --grep
. Observe os caracteres--all
e%b
. Thx @AshleyCoolman pelareset
dica.find = log --oneline --name-status -i --grep
Embora um pouco tarde, existe uma
:/
notação dedicada para especificar um commit (ou revisão) com base na mensagem de commit, apenas prefixe a string de pesquisa com:/
, por exemplo:Aqui
<message>
pode ser um padrão regex complexo composto por espaços em branco, então por favor, certifique-se de citar / escapar quando necessário, por exemplo:Como alternativa, um ponto inicial pode ser especificado, para encontrar o commit mais próximo acessível a partir de um ponto específico, por exemplo:
Veja: manual de revisões do git .
fonte
fonte
deve fazer o truque
fonte
Tente isso!
fonte
git grep
vez do grep normal e fornecer o--all
sinalizador para pesquisar várias ramificações.git log --all --grep='Build 0051'
(@ resposta de shelhamer)git log -g
. Você pode ter perdido o histórico em uma redefinição, mas ainda pode verificar o reflog se ele não tiver sido coletado como lixo.primeiro uso
git log --oneline
para encontrar o SHA do commit (Message), então eu useigit log --stat 8zad24d
com o SHA (o primeiro exemplo de casais sha char (8zad24d)) para encontrar as informações corretasfonte
Este:
ou isto:
comandos funcionam melhor para mim.
fonte
Para pesquisar em todos os ramos
Depois de saber qual commit você deseja chegar
fonte
Se a alteração não for muito antiga, você pode fazer,
git reflog
e depois efetue o check-out do ID de confirmação
fonte