Chcę pobrać pojedynczy plik z repozytorium git do innej lokalizacji (innej niż działający katalog) i pozostawić bieżący działający katalog tak, jak jest. I chcę, żeby Git sprawdził mój plik z prawidłowymi zakończeniami linii.Jak mogę zachować zakończenia linii, gdy sprawdzam pojedynczy plik w innej lokalizacji za pomocą git?
Pracuję w systemie Windows, ale mam ten sam problem w Linuksie.
Tu jest mój scenariusz (Win7 64-bitowy):
Najpierw upewnij się, że git konwertuje CRLF do LF na popełnić i LF na CRLF na kasie:
git config --local core.autocrlf true
Następnie utworzyć plik nazywa crlf.txt z zakończeń linii crlf i zobowiązać go:
git add crlf.txt
git commit -m "File with crlf"
zmienić coś w crlf.txt i zobowiązać go:
git add crlf.txt
git commit -m "Change in crlf.txt"
Teraz chcę dostać crlf.txt jak to było na pierwszym popełnienia:
git show HEAD~1:crlf.txt > "/home/user/crlf_like_in_head-1.txt"
Plik "crlf_like_in_head-1.txt" nie zawiera CRLF ale LF. Myślę, że git show jest poprawny, ponieważ pokazuje zawartość pliku podobną do repozytorium (core.autocrlf = true konwertuje CRLF na LF). Wiem, że z dokumentacji i próbowałem to samo z core.autocrlf = false. Z core.autocrlf = false "crlf_like_in_head-1.txt" zawiera CRLF. Wiem, że mogę z łatwością przekonwertować LF na CRLF, ale muszę upewnić się, że plik wynikowy jest taki sam, jak został sprawdzony z git.
wiem, że mogę również kasy pojedynczego pliku git checkout:
git checkout HEAD~1 crlf.txt
Ale to nadpisuje aktualną treść crlf.txt w katalogu roboczym (także jeśli crlf.txt był w brudnym stanie) i nie mogę go sprawdzić w innym folderze za pomocą git-checkout.
Dziękuję za odpowiedź. Ale to nie działa pod Win32. Zwraca następujący błąd: "error: pathspec" hallo.txt "nie pasuje do żadnego pliku znanego z git." Próbowałem także z opcją core.worktree. Działa, gdy kupuję pełną gałąź lub wersję (git - work-tree =/home/user checkout HEAD ~ 1) – fernsehkind
Miałem ten sam problem podczas testowania tego. Czy próbujesz sprawdzić ścieżkę, która jest rodzicem twojego repo? – Chronial
Tak, zrobiłem. Ale spróbowałem też zupełnie innej ścieżki. Ale to nie działa. – fernsehkind