해결된 질문
작성
·
22
0
안녕하세요.
git checkout [commit ID] 를 통해 예전의 커밋으로 되돌릴 수 있다고 배웠는데요.
현재 working directory에 rectangle 및 circle 이 있고, 현재 커밋 버전이 3일 때,
- rectangle 파일은 커밋 2로 되돌리고,
- circle 파일은 커밋 1로 되돌리고 싶을 경우
각각의 파일에 대하여 다른 버전의 커밋으로 되돌리는 것이 가능한지 궁금합니다.
실무에서는 이런 일이 빈번하게 일어날 것으로 예상이 되어서요.
이를테면 a 파일에 버그가 난 걸 모른 채로 b 파일을 작업해서 커밋을 완료했는데, a 파일의 버그를 뒤늦게 발견하여 되돌리고자 하는데 이때 b 파일의 작업 내역은 되돌리고 싶지 않을 수 있으니까요.
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. yuntae.kang님께서 Git에서 특정 파일을 여러 커밋으로 개별적으로 되돌리는 방법에 대해 질문해 주셨군요.
Git은 각 파일을 개별적으로 이전 커밋 상태로 복원할 수 있는 기능이 있습니다. 이를 위해 주로 git checkout
명령어를 사용합니다.
예를 들어, rectangle
파일을 커밋 2로 되돌리고, circle
파일을 커밋 1로 되돌리고 싶다면 다음과 같은 절차를 따를 수 있습니다:
git checkout <commitID2> -- rectangle
git checkout <commitID1> -- circle
위 명령어를 사용하면, 지정한 파일만 해당 커밋의 상태로 복원됩니다. 이때 복원된 파일은 워킹 디렉토리에 반영되어 커밋하지 않으면 다른 파일에는 영향을 미치지 않고 남아 있습니다.
git add rectangle circle
git commit -m "Revert rectangle to commit 2 and circle to commit 1"
이 방법은 특정 파일에 대해 필요한 커밋으로 되돌리는 융통성 있는 접근법을 제공합니다. 실무에서도 버그 수정 및 이와 같은 파일 단위의 롤백이 필요할 때 유용하게 사용됩니다.
추가로, 해당 내용과 관련된 참고 링크를 제공해 드립니다:
- Git checkout을 사용한 파일별 복원 방법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요, yuntae.kang 님 :)
git은 복구하지 못하는 코드가 남아있을 땐, git checkout 명령어를 막아요!
그래서 아래와 같은 오류만을 던지고 git checkout 명령어를 사용하지 못하는 경우가 있습니다.error: Your local changes to the following files would be overwritten by checkout:
rectangle
Please commit
수시로 commit을 하시고 명령어를 사용하시는 걸 권장드립니다!
감사합니다.
추가 질문이 있는데요, git checkout [commit ID] 명령어는 현재 working directory의 tracked 파일들과 staging area 의 파일들을 해당 commit 의 상태로 되돌린다고 배웠는데요.
만약... 최종 커밋 이후 working directory에서 작업을 수행하다가, 실수로 git checkout 을 입력해버리면, 다시 기존의 (커밋되지 않은) working directory는 복구할 수 없는 것일까요?