escrevendo um one-liner para recuar um commit em um git repo

0

Eu quero voltar atrás, commit-commit, para encontrar alguns estilos CSS que eu criei. Estou ciente de git-bisect ; Eu usei e isso não me ajudou a encontrar o meu trabalho antigo.

Eu posso obter uma tabela de hashes de confirmação em ordem histórica com este comando:

$ git log --pretty=oneline | awk '{print $1;}'

f3791f1da33b9e92a3a5292a0542834aca0908ef
2720a9ec4bb5b4f7b4dd02b056c375e71a44be3c
a9bb455608db70c76545e5862b89a02f9e9f590d

Então eu só preciso pegar o primeiro e fazer um git checkout com ele. Eu tentei usar head , mas não sei o suficiente sobre a sintaxe de passagem para passar a saída corretamente para ela:

$ $(git log --pretty=oneline | awk '{print $1;}') | head -1
bash: 0dcca7e530fca682552341718462af150fe27dc5: command not found

$ $(git log --pretty=oneline | awk '{print $1;}') > head -1
bash: 0dcca7e530fca682552341718462af150fe27dc5: command not found

Como posso obter o topo da saída do meu comando anterior

Eu gostaria disso como um verso, para que eu possa adicioná-lo aos meus aliases do git, mas se não for, tudo bem; Eu vou fazer uma função bash.

    
por user394 25.04.2018 / 17:07

1 resposta

2

Para verificar o commit pai, execute

git checkout HEAD~1

Isto pode ser repetido ad nauseam, até chegar ao primeiro commit.

Se você precisar explorar diferentes pais antes de uma mesclagem, use ^ :

git checkout HEAD^2

irá verificar o segundo pai do atual commit da mesclagem.

Consulte "Especificando revisões" na documentação git-rev-parse para obter detalhes.

    
por 25.04.2018 / 17:09