Eu tenho o arquivo " main.cpp
" aberto no meu editor.
Também quero ver a revisão anterior de " main.cpp
" no editor.
O jeito que eu faço agora é assim.
close "main.cpp" in the editor
prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>
open "main.cpp" and "old_main.cpp" in the editor
Pode ser simplificado, para que eu não precise fechar "main.cpp" no editor?
O que eu espero é que uma variante git-checkout
disso possa fazer isso.
UPDATE: estou usando o git no mac osx 10.5.7
prompt> git --version
git version 1.6.0.4
prompt>
UPDATE2: Jakub Narębski resposta é:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
UPDATE3: resposta de Karmi, para uma revisão específica:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
Respostas:
Você pode usar o "git show" para isso:
(Observe que há um
:
caractere de dois pontos [ ] entreHEAD^
emain.cpp
.) A<revision>:<path>
sintaxe é descrita na página de manual git rev-parse , ao lado do último ponto na seção "Especificando revisões":Observe que
<path>
aqui está o caminho COMPLETO em relação ao diretório superior do seu projeto, ou seja, o diretório com o.git/
diretório. (Ou, para ser mais exato em " <revisão> " (que em geral pode ser qualquer <árvore->> , ou seja, algo que represente árvore))Se você quiser usar o caminho relativo ao diretório atual, precisará usar a
./<path>
sintaxe (ou../path
para subir do diretório atual).Editar 2015-01-15: informações adicionadas sobre a sintaxe do caminho relativo
Na maioria dos casos, é possível obter a mesma saída usando o
git cat-file
comando de baixo nível (encanamento) :fonte
Apenas para adicionar à resposta de Jakub: você nem precisa redirecionar a saída para um arquivo
>
, se estiver interessado apenas em escanear o conteúdo do arquivo no terminal. Você pode apenas correr$ git show 58a3db6:path/to/your/file.txt
.fonte