Como posso procurar uma mensagem de confirmação no GitHub?


328

Não em um repositório Git , mas no GitHub especificamente - como pesquiso apenas as mensagens de confirmação de um repositório / filial específico?


3
O repo é público ou privado?

2
Que tal procurar mensagens de confirmação em todos os garfos? Tentando evitar reinventar a roda quando o repositório principal tiver mais de 100 garfos!
Daniel Sokolowski

Alguma mudança desde então?
Pavel Šimerda

Quero pesquisar na rede commits
frumbert

Respostas:


68

A partir de 2017, é uma funcionalidade incluída no próprio GitHub .

O exemplo de pesquisa usada por eles é repo:torvalds/linux merge:false crypto policy

insira a descrição da imagem aqui Imagem GIF de https://github.com/blog/2299-search-commit-messages


Recebo um erro de permissão ao pesquisar um repositório particular ao qual tenho acesso de leitura / gravação.
anon58192932

1
Estou assistindo há cinco minutos e não consigo descobrir para onde o mouse vai depois que o zoom se aproxima para baixo e para a direita.
21418 Kevin Krumwiede

1
@KevinKrumwiede provavelmente para o botão "Stop Recording" haha
Corey Cole

Eu desisti e uso "git log --all --grep = searhterm"
Edwin Evans

206

Você costumava fazer isso, mas o GitHub removeu esse recurso em algum momento de meados de 2013. Para conseguir isso localmente, você pode:

git log -g --grep=STRING

(Use a -gbandeira se desejar pesquisar outras ramificações e confirmações pendentes.)

-g, --walk-reflogs
    Instead of walking the commit ancestry chain, walk reflog entries from
    the most recent one to older ones.

143
por que diabos eles removeram? Esse é um recurso realmente útil.
Josh Brown

1
Fator místico: I.quantos espaços.estes.a cadeia geralmente é suficiente.
Dbrower 13/02/15

11
Dica omita o -gsinalizador para os casos de uso mais comuns. Eu não procurei muito nisso, mas com -ga pesquisa parece voltar apenas um mês. git log -g --grep=fixenquanto no developramo de um repo que tem ~ 8000 commits abrangendo dois anos, só vai já em fevereiro 2.
Dan Dascalescu

1
@ DanDascalescu Strange, eu consegui encontrar confirmações voltando pelo menos 5 meses com a -gbandeira.
26615 Chrispy

134

Atualização (05/01/2017):

O GitHub publicou uma atualização que agora permite pesquisar nas mensagens de confirmação de sua interface do usuário. Consulte a publicação no blog para obter mais informações.


Eu tive a mesma pergunta e entrei em contato com alguém GitHub ontem:

Como eles mudaram o mecanismo de pesquisa para o Elasticsearch, não é possível procurar mensagens de confirmação usando a interface do usuário do GitHub. Mas esse recurso está na lista de desejos da equipe.

Infelizmente, não há data de lançamento para essa função no momento.


7
Você me economizou um tempo infrutífero no GitHub, imaginando como alcançar o que eu supunha que seria uma peça óbvia de funcionalidade. Portanto, agora temos que clonar o repositório localmente para grep através da linha de comando. Caramba, isso é progresso né ?! ;)
McNab

68
Até a pesquisa avançada na interface da Web da Web não permite pesquisar no campo mais importante - a mensagem de confirmação real. Isso é absolutamente ridículo. Github ajude!
Brad Thomas

22
Sim. Esqueça o fato de que eles criaram um serviço da Web que ajuda a revolucionar e popularizar o software de código aberto, o fato de eles não terem esse único recurso o torna uma farsa completa!
Jon Cairns

12
Obrigado por publicar o conteúdo do seu discurso com o GitHub em um local público facilmente encontrado. É absurdo que essa seja a única maneira de o público obter essas informações - é profundamente estúpido o GitHub não ter um rastreador de problemas públicos - mas na presença de tanta estupidez, o que você fez aqui é uma maneira útil de impedir centenas de outros perdem tempo enviando a mesma solicitação. Obrigado pelas centenas de horas de trabalho que você economizou.
Mark Amery

1
Bem, não muito melhor do rastreador pública de Atlasian, que está cheio de velhas questões em aberto 7 anos com 1000, de upvotes ...
Askdesigners

58

A resposta curta é que você não pode pesquisar mensagens de confirmação diretamente no site github.com. Por enquanto, recomendamos a git grepsolução local que outras pessoas deste segmento propuseram.

Em um determinado momento, o GitHub ofereceu uma git greppesquisa de estilo sobre as mensagens de confirmação para um único repositório. Infelizmente, essa abordagem expôs uma negação de serviço que poderia tornar um servidor de arquivos inacessível. Por esse motivo, removemos a git greppesquisa.

As estimativas atuais do verso do envelope colocam o número de confirmações no GitHub em torno da marca de 80 bilhões. Embora os engenheiros do Google riem pelas nossas costas, esse é um número bastante grande de documentos para armazenar no ElasticSearch. Adoraríamos tornar esse conjunto de dados pesquisável, mas não é um projeto trivial.


2
+1. Isso parece confirmar o que eu pensei que escrever a minha resposta : cometer mensagem não são indexados: você está trabalhando com a indexação git diff's(ou seja, o conteúdo dos commits, não os metadados commit)
VonC

Que tal apenas "pular para confirmar" botão? Atualmente, é acessível a partir da URL - stackoverflow.com/a/12214817/817632, mas não há interface para ela (não que eu saiba). Caso de uso - encontre um hash de confirmação em algum lugar no bower.json, em vez da versão, e queira ver exatamente o que esse commit faz. Isso economizará algum tempo pesquisando no Google.
Olga #

44

Isso foi removido do GitHub. Eu uso:

$git log --all --oneline | grep "search query"

insira a descrição da imagem aqui

Você também pode filtrar por autor:

$git log --all --oneline --author=rickhanlonii | grep "search query"

3
Isso funcionou para mim, mas a resposta mais votada não.
makdad

21

Na página de ajuda para pesquisar código , parece que isso ainda não é possível.

Você pode procurar texto no seu repositório, incluindo a capacidade de escolher arquivos ou caminhos para pesquisar, mas não pode especificar que deseja pesquisar em confirmações.

Talvez sugira isso para eles ?


18
Esse parece ser o caso de uso mais "padrão" quando se trata de pesquisar em um repositório. Especialmente para alguém que conhece um novo repositório com toneladas de confirmações. Eles definitivamente deveriam considerar adicionar isso.
Jose Browne

19

Você pode fazer isso com repositórios que foram rastreados pelo Google (os resultados variam de repositório para repositório).

Pesquise todas as ramificações de todos os repositórios rastreados para "alterar licença"

site "alterar licença": https://github.com/*/*/commits

Pesquise a ramificação principal de todos os repositórios rastreados para "alterar licença":

site "alterar licença": https://github.com/*/*/commits/master

Pesquise na ramificação principal de todos os repositórios rastreados do twitter por "alterar licença"

site "alterar licença": https://github.com/twitter/*/commits/master

Pesquise em todos os ramos do repositório twitter / some_project por "alterar licença"

site "alterar licença": https://github.com/twitter/some_project/commits


4
@DZenBot se não for um repositório público, é provável que você já tenha uma cópia local para o git grep, basta colocar esta resposta para aqueles que não querem clonar um repositório público inteiro para descobrir quando alguma alteração foi feita. Eu usá-lo principalmente para encontrar commits que o apoio de remoção para versões mais antigas do GTK ou quando as licenças mudar para GPL3
Technosaurus

15

Atualize janeiro de 2017 (dois anos depois):

Agora você pode procurar por mensagens de confirmação ! (ainda apenas no ramo mestre)

https://cloud.githubusercontent.com/assets/1387653/21622772/61a5c7a6-d1bc-11e6-809d-134936a4ac05.gif


Fevereiro de 2015: Não tenho certeza se isso seria possível, considerando a atual base de infraestrutura de pesquisa no Elasticsearch (introduzida em janeiro de 2013 ).

Como resposta, "tirando fontes confiáveis ​​e / ou oficiais", aqui está uma entrevista feita com o pessoal do GitHub encarregado de apresentar o Elasticsearch no GitHub (agosto de 2013)

Tim Pease : Temos dois tipos de documentos: um é um arquivo de código-fonte e o outro é um repositório. A maneira como o git funciona é que você tem confirmações e possui uma ramificação para cada confirmação. Os documentos de repositório acompanham a confirmação mais recente para esse repositório específico que foi indexado. Quando um usuário envia uma nova confirmação para o Github, nós retiramos o documento do repositório do elasticsearch. Em seguida, vemos o commit indexado mais recentemente e, em seguida, obtemos uma lista de todos os arquivos que foram modificados, adicionados ou excluídos entre esse push recente e o que indexamos anteriormente. Então podemos ir em frente e apenas atualizar os documentos que foram alterados. Não precisamos indexar novamente toda a árvore do código-fonte toda vez que alguém pressiona.

Andrew Cholakian: Então, vocês apenas indexam, suponho , o ramo principal.

Tim Pease: Correto. É apenas o chefe do ramo principal que você entrará lá e ainda há muitos dados, dois bilhões de documentos, 30 terabytes.

Andrew Cholakian: Isso é incrivelmente grande.

[...]

Tim Pease: Com a indexação do código fonte no push, é um processo de autocorreção.
Temos esse documento de repositório que controla o último commit indexado. Se perdemos, perdemos apenas três confirmações onde esses trabalhos falham, a próxima confirmação que chega, ainda estamos analisando a diferença entre a confirmação anterior que indexamos e a que estamos vendo com esse novo envio.
Você faz um git diffe obtém todos os arquivos que foram atualizados, excluídos ou adicionados. Você pode apenas dizer: “Ok, precisamos remover esses arquivos. Precisamos adicionar esses arquivos e tudo mais. ” É auto-reparável e é essa a abordagem que adotamos em praticamente toda a arquitetura.

Isso significa que nem todos os ramos de todo o repo seriam indexados com essa abordagem.
Uma pesquisa de mensagens de confirmação global não está disponível no momento.
E o próprio Tim Pease confirma que as mensagens de confirmação não estão indexadas .

Observe que não é impossível obter a indexação local de um clone local da pesquisa elástica: consulte " Pesquisando um repositório git com ElasticSearch "

Mas para um repo específico, o mais fácil é cloná-lo e fazer um:

git log --all --grep='my search'

(Mais opções em " Como pesquisar em um repositório Git por mensagem de confirmação? ")


7

Como isso foi removido do GitHub, eu tenho usado gitkno Linux para fazer isso.

Do terminal, vá para o seu repositório e digite gitk.

No meio da GUI, há uma caixa de pesquisa. Ele fornece uma boa seleção de filtros:

Barra de pesquisa

Escopo - contendo, tocando caminhos, adicionando / removendo string, alterando correspondência de linha

Tipo de correspondência - Exato / IgnCase / Regexp

Campos de pesquisa - Todos os campos / Título / Comentários / Confirmador



4

Se você possui uma versão local do repositório, tente este script bruto que escrevi para abrir as páginas do GitHub para todos os commits correspondentes ao seu termo de pesquisa em novas guias no navegador padrão:

#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
    python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done

Apenas substitua https://github.com/RepoOwnerUserName/RepoName/pela URL GitHub atual do seu repositório, salve o script em algum lugar (por exemplo githubsearch.sh, torne-o executável ( chmod +x githubsearch.sh) e adicione o seguinte alias ao seu ~/.bashrcarquivo:

alias githubsearch='/path/to/githubsearch.sh'

Então, de qualquer lugar no seu repositório Git, faça isso no terminal:

githubsearch "what you want to search for"

e quaisquer confirmações que correspondam ao seu termo de pesquisa (sem distinção entre maiúsculas e minúsculas) terão as páginas correspondentes do GitHub abertas no navegador. (Esteja ciente de que, se o seu termo de pesquisa aparecer em centenas de confirmações, isso poderá travar o navegador e consumir a CPU do seu PC por um tempo.)


0

A partir de meados de 2019, digite o que você deseja pesquisar na caixa de pesquisa superior esquerda e clique em "Confirmações".

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.