Eu clonei um repositório git de um determinado projeto. Posso transformar os arquivos no estado inicial e, quando revisar os arquivos, vá para a revisão 2, 3, 4 ... mais recente? Eu gostaria de ter uma visão geral de como o projeto estava evoluindo.
git
revision
revision-history
xralf
fonte
fonte
git log -n1
. Mas, a menos quegit checkout
falhe, é um desperdício de esforço.git log
mostra apenas o primeiro commit agora, posso descobrir o sha1 do próximo commit?git log --oneline
e colar a saída em um arquivo de texto para referência (as somas abreviadas de sha1 que ele fornece são garantidas como únicas). Outra opção, se sua história é linear, é descobrir quantos commits existem desde o primeiro comprometer atémaster
e usogit checkout master~543
(se houver 543 commits), entãogit checkout master~542
, etc.Para ir para uma versão / confirmação específica, execute os seguintes comandos. HASH-CODE você pode obter
git log --oneline -n 10
Nota - Após redefinir para uma versão / confirmação específica, você pode executar
git pull --rebase
, se desejar recuperar todos os commits descartados.fonte
reset
não apenas o checkout um determinado ponto no gráfico que também irá mover o momento check-out branchreset
, todas as alterações pendentes são descartadas.git pull --rebase
funciona apenas se você tiver um controle remoto para seu repositório e estiver atualizado.Você pode obter uma visão gráfica do histórico do projeto com ferramentas como
gitk
. Apenas corra:Se você deseja fazer check-out de uma ramificação específica:
Para uma confirmação específica, use o hash SHA1 em vez do nome da ramificação. (Veja Treeishes no Livro da Comunidade Git , que é uma boa leitura, para ver outras opções para navegar em sua árvore.)
git log
também possui um conjunto de opções para exibir o histórico detalhado ou resumido.Não conheço uma maneira fácil de avançar em um histórico de consolidação. Projetos com uma história linear provavelmente não são tão comuns assim. A idéia de uma "revisão" como você faria com o SVN ou CVS não é tão boa assim no Git.
fonte
Usando a chave SHA1 de uma confirmação, você pode fazer o seguinte:
Primeiro, encontre a confirmação que você deseja para um arquivo específico:
git log -n <# commits> <file-name>
Isso, com base no seu
<# commits>
, gerará uma lista de confirmações para um arquivo específico.DICA: se você não tem certeza do que cometer você está procurando, uma boa maneira de descobrir é usando o seguinte comando:
git diff <commit-SHA1>..HEAD <file-name>
. Este comando mostrará a diferença entre a versão atual de uma confirmação e uma versão anterior de uma confirmação para um arquivo específico.NOTA: A chave SHA1 de uma confirmação é formatada na
git log -n
lista de:Segundo, faça o checkout da versão desejada:
Se você encontrou o commit / versão desejado, basta usar o comando:
git checkout <desired-SHA1> <file-name>
Isso colocará a versão do arquivo que você especificou na área de preparação. Para retirá-lo da área de preparação, use o comando:
reset HEAD <file-name>
Para reverter para onde o repositório remoto está apontado, basta usar o comando:
git checkout HEAD <file-name>
fonte
Eu estava em uma situação em que possuímos uma ramificação principal e, em seguida, outra ramificação chamada 17.0 e, dentro dessa versão 17.0, havia um hash de confirmação sem dizer "XYZ" . E o cliente recebe uma compilação até a revisão XYZ. Agora, descobrimos um bug e isso precisa ser resolvido para esse cliente. Portanto, precisamos criar ramificações separadas para esse cliente até o hash "xyz". Então aqui está como eu fiz isso.
Primeiro, criei uma pasta com esse nome de cliente na minha máquina local. Digamos que o nome do cliente seja "AAA" quando a pasta for criada, emita o seguinte comando dentro desta pasta:
fonte
Uma maneira seria criar todos os commits já feitos nos patches. faça o checkout do commit inicial e aplique os patches em ordem após a leitura.
use
git format-patch <initial revision>
e entãogit checkout <initial revision>
. você deve obter uma pilha de arquivos no seu diretor começando com quatro dígitos, que são os patches.Quando terminar de ler sua revisão, faça o
git apply <filename>
que deve parecergit apply 0001-*
e contar.Mas eu realmente me pergunto por que você não gostaria de ler os patches em si? Por favor, poste isso em seus comentários porque estou curioso.
o manual do git também me fornece o seguinte:
você também pode dar uma olhada,
git blame filename
fornecendo uma lista na qual cada linha está associada a um autor de hash + de confirmação.fonte
Para chegar a um código confirmado específico, você precisa do código hash desse commit. Você pode obter esse código de hash de duas maneiras:
git log
e verifique seus commits recentes nesse ramo. Ele mostrará o código de hash do seu commit e a mensagem que você deixou enquanto estava enviando seu código. Basta copiar e depois fazergit checkout commit_hash_code
Depois de passar para esse código, se você quiser trabalhar nele e fazer alterações, faça outra ramificação com
git checkout -b <new-branch-name>
, caso contrário, as alterações não serão mantidas.fonte
Para verificar uma confirmação (você está olhando o passado!).
Para reiniciar brutalmente a partir de uma confirmação e excluir os ramos posteriores que você provavelmente errou.
fonte