Às vezes, faço check-out de uma versão anterior do código para examinar ou testar. Vi instruções sobre o que fazer se desejar modificar confirmações anteriores - mas suponha que eu não faça alterações. Depois que eu faço git checkout HEAD^
, por exemplo , como faço para voltar à ponta do ramo? ... git log
não me mostra mais o SHA do último commit.
git
version-control
Leo Alekseyev
fonte
fonte
git log
frase da sua pergunta, você sempre pode executargit log --all
(ou mais útilgit log --oneline --graph --all
).Respostas:
Se você sabe que o commit para o qual você deseja retornar é o chefe de algum ramo ou está marcado, você pode apenas
Você também pode usar
git reflog
para ver o que outras pessoas confirmam que seu HEAD (ou qualquer outra referência) apontou no passado.Editado para adicionar:
Nas versões mais recentes do Git, se você executou apenas
git checkout
ou alguma outra coisa para mover umaHEAD
vez, também podepara voltar para onde estava antes do último checkout. Isso foi motivado pela analogia com o idioma do shell
cd -
a voltar para o diretório de trabalho em que ele estava anteriormente.fonte
master
não é realmente nenhum tipo de palavra-chave, do jeito queHEAD
é. É apenas o nome da filial padrão em um novo repositório. Você pode executargit branch
para obter uma lista de ramificações em seu repositório egit tag -l
uma lista de tags. Da mesma forma,origin
é o nome padrão do controle remoto do qual um repositório é clonado, mas não há nada de especial nele.git reflog
fornece uma lista de hashes, quando você pode usargit checkout [commit-hash]
.mestre de verificação geral do git
master é a dica ou a última confirmação. O gitk mostrará apenas onde você está na árvore no momento. O git reflog mostrará todos os commits, mas nesse caso, você só quer a dica, então git checkout master.
fonte
git checkout branchname
Me deparei com essa questão agora e tenho algo a acrescentar
Para ir para o commit mais recente:
Explicação:
git log --branches
mostra o log de confirmações de todas as ramificações locais-1
limite a uma confirmação →--pretty=format:"%H"
formato de confirmação mais recente para mostrar apenas ogit checkout $(...)
uso de hash de confirmação, saída do subshell como argumento para checkoutNota:
Isso resultará em uma cabeça desanexada (porque fazemos o checkout diretamente no commit). Isso pode ser evitado extraindo o nome do ramo usando
sed
, explicado abaixo.Para ir para a ramificação do commit mais recente:
Explicação:
git log --branches
mostra o log de confirmações de todas as ramificações locais-1
limite a uma confirmação → o--pretty=format:"%D"
formato de confirmação mais recente para mostrar apenas os nomes de referência| sed 's/.*, //g'
ignora todos, exceto o último de várias refs (*)git checkout $(...)
usa a saída do subshell como argumento para checkout*) HEAD e ramificações remotas são listadas primeiro, as ramificações locais são listadas por último em ordem alfabética decrescente, portanto, o restante será o primeiro nome de ramificação em ordem alfabética
Nota:
Isso sempre usará apenas o primeiro nome do ramo (em ordem alfabética) se houver vários para esse commit.
Enfim, acho que a melhor solução seria apenas exibir os nomes de referência para o commit mais recente para saber para onde fazer o checkout:
Por exemplo, crie o alias
git top
para esse comando.fonte
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Dê uma olhada na GUI gráfica ...
gitk
mostra todas as confirmações. Às vezes é mais fácil trabalhar com gráficos ... ^^fonte
Você pode usar um dos seguintes comandos git para isso:
fonte
mostre todos os branches e confirme o
log do git --branches --oneline
mostre o último registro do git do commit
--branches -1 --oneline
show antes do último commit
git log --branches -2 --oneline
fonte
fonte
Se você tem um ramo diferente do mestre, uma maneira fácil é fazer o check-out desse ramo e depois o mestre. Voila, você está de volta à ponta do mestre. Provavelmente há maneiras mais inteligentes ...
fonte
Você pode simplesmente fazer
git pull origin branchname
. Ele buscará a confirmação mais recente novamente.fonte
Se o seu commit mais recente estiver na ramificação principal, você pode simplesmente usar
fonte