Eu fiz algumas alterações em um arquivo que foi comprometido algumas vezes como parte de um grupo de arquivos, mas agora quero redefinir/reverter as alterações nele de volta para uma versão anterior.
Eu fiz um git log
junto com um git diff
para encontrar a revisão que eu preciso, mas simplesmente não tenho idéia de como fazer o arquivo voltar ao seu estado anterior no passado.
git checkout -- foo
Isso irá redefinir o foo
para HEAD. Você também pode:
git checkout HEAD^ foo
para uma revisão de volta, etc.
Divertidamente, git checkout foo
não funcionará se a cópia de trabalho estiver em um diretório chamado foo
; entretanto, tanto git checkout HEAD foo
como git checkout ./foo
funcionarão:
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
Note, no entanto, que git checkout ./foo
e git checkout HEAD ./foo
.
não são exactamente a mesma coisa; caso seja o caso:
$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A
(O segundo add
faz o arquivo no índice, mas ele não recebe
comprometidos).
`A saída de caixa ./foo
significa reverter o caminho ./foo
a partir do **index***;
adicionando HEAD
instrui Git a reverter esse caminho no índice para o seu
Revisão "HEAD" antes de o fazer.