Git에서 개별 파일 및 폴더를 이전 버전으로 되돌리는 방법
Git은 코드베이스의 모든 버전을 추적하기 위한 강력한 도구이며, 파일의 이전 버전으로 돌아가 복원해야 하는 경우가 많습니다. Git은 모든 커밋을 되돌리거나 전체 저장소를 재설정할 수 있지만 변경 사항을 단일 파일이나 폴더로 되돌릴 수도 있습니다.
반환 대 재설정
일반적으로 커밋을 “되돌리기”하면 Git은 새 커밋을 적용하고 반대 변경 사항을 적용하여 효과적으로 되돌립니다. 이것은 당신이 실수를 해서 그 커밋이 아직 기록에 있더라도 “제거”해야 하는 경우에 유용합니다.
리포지토리를 재설정하는 것은 약간 다릅니다. 한 번에 하나의 커밋만 실행 취소할 수 있지만 그렇게 git reset
하면 Git은 커밋이 이루어진 시점의 저장소 상태를 되돌립니다. 이것은 일반적으로 커밋을 제거하거나 분기 기록을 수정하기 위해 여러 가지 이유로 수행됩니다.
이러한 작업은 모두 전체 리포지토리에서 작동하지만 유사한 명령을 사용하여 개별 파일이나 폴더에서 동일한 작업을 수행할 수도 있습니다. 예를 들어, git reset
단일 파일에 를 사용하면 해당 파일이 커밋 당시의 상태로 돌아갑니다. 이것은 Git 기록에서 이전 버전의 파일을 선택하려는 경우에 유용합니다.
Git에서 이전 버전 보기
파일을 이전 상태로 되돌리는 로우테크 솔루션은 매우 간단합니다. Github 및 대부분의 다른 Git 서버는 파일 기록을 추적하고 커밋을 클릭하고 파일 찾아보기를 클릭하여 파일을 볼 수 있습니다. 과거 저장소의 스냅샷입니다. 그런 다음 파일을 다운로드하거나 텍스트를 복사할 수 있습니다.
이것은 큰 코드 파일로 작업하고 작성한 함수의 이전 버전을 검토하려는 경우에 특히 유용합니다. 이 경우에는 하나의 함수만 반환하고 싶지 않을 것입니다. Git CLI를 건드리지 않고 이 기능의 코드를 복사할 수 있습니다.
Git에서 파일을 이전 버전으로 재설정
이 테스트 저장소에서 README를 편집하고 새 파일을 추가하는 커밋을 만들었습니다. README에 대한 변경 사항을 되돌리고 싶지만 전체 저장소를 원래 커밋으로 다시 재설정하고 싶지는 않습니다.
해결책은 해당 파일의 이전 버전을 확인하여 README를 재설정하는 것입니다. Git 명령 checkout
은 분기 전환과 같은 많은 작업을 수행하지만 주로 지정된 커밋 또는 분기 ID로 파일을 업로드하는 데 사용됩니다.
파일을 이전 버전으로 재설정하려면 재설정하려는 커밋 ID를 찾아야 합니다. 단일 파일 범위를 사용 git log
하여 해당 파일에 대한 변경 사항만 볼 수 있습니다.
git log README.md
커밋 ID를 복사한 다음 git checkout
ID와 파일 경로로 실행합니다.
git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md
이렇게 하면 파일이 다시 변경되지만 변경 사항은 아직 커밋되지 않습니다. 편집하고 준비가 되면 커밋할 수 있습니다.
이 예 git checkout
에서 변경 사항은 다음 커밋을 위해 준비됩니다. 커밋하지 않으려면 변경 사항을 취소할 수 있습니다. 이것은 Github를 사용하지 않고 이전 버전의 파일을 일시적으로 다운로드하는 데 유용할 수 있습니다.
개별 파일에 대한 변경 사항 되돌리기
마찬가지로 단일 커밋에서 변경 사항을 되돌리려면 git revert
. 그러나 한 파일에 적용할 수 있는 방법은 없지만 커밋이 다른 파일에 영향을 미치는 경우 변경 사항을 되돌릴 수 있습니다.
이 --no-commit
플래그를 사용하여 Git이 자동으로 생성하는 “되돌린 커밋”을 편집할 수 있습니다.
git revert de8564b131ca6a15a7e7c73f5ef156b119cc0b93
이렇게 하면 반환을 완료하기 전에 파일을 수정할 수 있습니다. 원하지 않는 변경 사항이 있는 경우 클라이언트를 통해 또는 빈 git checkout
.
git checkout -- file
답글 남기기