Respostas:
Use git checkout <sha1>
para verificar uma confirmação específica.
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 uso git checkout master~543
(se houver 543 commits), então git checkout master~542
, etc.
Para ir para uma versão / confirmação específica, execute os seguintes comandos. HASH-CODE você pode obtergit log --oneline -n 10
git reset --hard HASH-CODE
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.
reset
não apenas o checkout um determinado ponto no gráfico que também irá mover o momento check-out branch
reset
, 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:
gitk --all
Se você deseja fazer check-out de uma ramificação específica:
git checkout <branch name>
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.
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:
comprometer
<SHA1 id>
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>
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:
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ão git 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 parecer
git 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:
git show next~10:Documentation/README
Mostra o conteúdo do arquivo Documentation / README como eles estavam atualizados no 10º último commit da ramificação a seguir.
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.
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.
git log -n1
. Mas, a menos quegit checkout
falhe, é um desperdício de esforço.