git reflog versus git log para ajudar a resolver o problema (sem ramificação)

Recentemente, tive um problema em que um de nossos sites de produção não parecia estar em nenhuma de nossas filiais. Na verdade, executando:

git status

resultou em (nenhuma ramificação) como sendo a ramificação ativa.

Uma maneira comum de entrar nessa situação é verificar um commit diretamente pelo hash SHA1 em vez de um nome de branch. isto é, seu ponteiro HEAD está referenciando diretamente um commit ao invés de apontar simbolicamente para o nome de um branch. Para outras maneiras de isso acontecer, consulte este link .

Bem, eu não sabia disso na época. Mais tarde, descobri que um colega havia verificado um hash específico para verificar algo e tinha esquecido de verificar o branch master novamente.

Inicialmente tentei executar:

git log

e ele retornou informações úteis, mas apenas um registro dos commits que ocorreram até o ponto em que esse hash específico foi verificado. Parecia estar algumas semanas atrás do branch master, mas realmente não me disse o que realmente aconteceu.

Cheguei à conclusão correta com o uso do comando:

git reflog

Cenário

Ele foi capaz de me dizer em que ponto o HEAD foi movido para um commit específico. Foi nesse ponto que a lâmpada acendeu e eu pude descobrir o que aconteceu.

Este comando é ouro . Basicamente, conta o histórico de cada ação dentro do Git onde os dados são armazenados e, neste caso; o histórico de comutações de ramificação e pulls / merges. É muito provável que este comando seja capaz de ajudar a cavar um histórico útil, portanto, é uma boa ferramenta. Também dou crédito ao meu colega de trabalho Matt, que me ajudou a entender os fundamentos do que deu errado aqui.