Eu já examinei os documentos relevantes de git-scm.com e gitref.org , mas não consigo entender isso.
Digamos que eu quero obter todas as confirmações para terça-feira, 12 de novembro de 2013. Usando um repositório existente como exemplo, sei que tenho confirmações nesse dia e confirma no dia anterior e no dia seguinte.
Com 2013-11-11
e2013-11-12
Todos os itens a seguir me confirmam nos dias 11 e 12 de novembro:
git log --after="2013-11-11" --until="2013-11-12"
git log --since="2013-11-11" --until="2013-11-12"
git log --after="2013-11-11" --before="2013-11-12"
git log --since="2013-11-11" --before="2013-11-12"
Com 2013-11-12
apenas
Todos os itens a seguir não me comprometem:
git log --since="2013-11-12" --until="2013-11-12"
git log --since="2013-11-12" --before="2013-11-12"
git log --after="2013-11-12" --until="2013-11-12"
git log --after="2013-11-12" --before="2013-11-12"
Com 2013-11-12
e2013-11-13
Como esperado (a partir dos resultados de 2013-11-11
e 2013-11-12
acima), todos os itens a seguir fornecem resultados de 12 e 13 de novembro:
git log --since="2013-11-12" --before="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
git log --since="2013-11-12" --until="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
...e assim por diante. Eu sinto que eu tentei todas as combinações possíveis de since
, after
, before
e, until
mas ainda não pode encontrar a resposta, nem eu entender se essas opções são inclusivas ou exclusivas, desde que parecem ser inclusiva se as duas datas são diferentes, mas exclusivo se estiver no mesmo dia. Perdi alguma coisa / o que estou fazendo de errado ?!
Respostas:
Obrigado John Bartholomew!
A resposta é especificar a hora, por exemplo
git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
fonte
git log --after="2013-11-12 00:00" --before="2013-11-13 00:00"
é melhor. Eu acreditogitk --since="2013-11-12 00:00" --until="2013-11-13 00:00" &
que também funcionaria se você tiver o gitk instalado.git log --after="2017-07-25" --before="2017-07-26"
dá resultados válidos para mim.Normalmente, eu checo meu log do git e vejo o que estava trabalhando em um dia específico e atualizo meu quadro de horários com base nisso, mas é difícil digitar a data completa no formato ISO, então eu faço assim
e adiciono
--author
para imprimir apenas meus commitsIsso imprime confirmações que ocorreram no último dia 9 de junho (portanto, para 2016, neste caso, e não para 2015 ou 2014 e assim por diante).
Os
--since/--after
e--until/--before
parâmetros também pode tirar coisas como3 days ago
,yesterday
, etc.fonte
since
euntil
não estiverem corretos, você não terá saída com certeza. Usegit log
em primeiro lugar, e tentar escolher umsince
euntil
valor com base no que você vê. Nenhuma filial ou qualquer coisa especial necessária. Não tenho certeza desde qual versão do Git esse recurso está disponível. Verifique se você possui uma versão recente também.git log --after="may 2" --before="may 3"
Nada de errado com a resposta aceita (que eu votei), mas ... estamos aqui pela ciência!
A saída abaixo pode ser expandida / personalizada com
pretty=format:<string>
espaços reservados :Não é 100% imune a erros, pois a mesma sequência poderia ter sido inserida por um usuário. Mas aceitável, dependendo de quais espaços reservados são usados. O snippet acima não falharia, por exemplo.
Pode-se assim apenas analisar o todo
git log
paraJSON
e consumir / manipular seus dados para um de conteúdo coração. Confira https://github.com/dreamyguy/gitlogg e nunca olhe para trás!Isenção de responsabilidade: esse é um dos meus projetos.
fonte
Eu criei um alias do git para esse propósito específico:
Uso:
fonte
git commitsAtDate yesterday
,2 days ago
, etc.Esse script exibe o intervalo de datas disponível para confirmações para o repo atual e solicita a data em que você deseja ver as confirmações. Ele exibe um SHA curto e o SHA completo, o autor, o carimbo de data / hora de confirmação e os comentários entre aspas simples.
O script continua solicitando datas até você pressionar Enter ou Control-D.
Usuários de Mac: requer data do gnu.
Eu chamei o script
commitsOnDates
, e aqui está em ação. A primeira data que eu insiro não tem confirmação, então a resposta é apenas uma linha vazia:fonte