파일별 git checkout
안녕하세요.
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로 되돌리고 싶다면 다음과 같은 절차를 따를 수 있습니다:
- 특정 파일 되돌리기
- rectangle 파일 복원:
git checkout <commitID2> -- rectangle
- circle 파일 복원:
git checkout <commitID1> -- circle
- rectangle 파일 복원:
위 명령어를 사용하면, 지정한 파일만 해당 커밋의 상태로 복원됩니다. 이때 복원된 파일은 워킹 디렉토리에 반영되어 커밋하지 않으면 다른 파일에는 영향을 미치지 않고 남아 있습니다.
참고 사항
- 복원된 파일 커밋: 필요한 경우, 복원한 파일들을 새 커밋으로 남기면 변경 사항을 영구적으로 보존할 수 있습니다.
git add rectangle circle git commit -m "Revert rectangle to commit 2 and circle to commit 1"
이 방법은 특정 파일에 대해 필요한 커밋으로 되돌리는 융통성 있는 접근법을 제공합니다. 실무에서도 버그 수정 및 이와 같은 파일 단위의 롤백이 필요할 때 유용하게 사용됩니다.
추가로, 해당 내용과 관련된 참고 링크를 제공해 드립니다:
- Git checkout을 사용한 파일별 복원 방법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
1
감사합니다.
추가 질문이 있는데요, git checkout [commit ID] 명령어는 현재 working directory의 tracked 파일들과 staging area 의 파일들을 해당 commit 의 상태로 되돌린다고 배웠는데요.
만약... 최종 커밋 이후 working directory에서 작업을 수행하다가, 실수로 git checkout 을 입력해버리면, 다시 기존의 (커밋되지 않은) working directory는 복구할 수 없는 것일까요?
0
안녕하세요, yuntae.kang 님 :)
git은 복구하지 못하는 코드가 남아있을 땐, git checkout 명령어를 막아요!
그래서 아래와 같은 오류만을 던지고 git checkout 명령어를 사용하지 못하는 경우가 있습니다.error: Your local changes to the following files would be overwritten by checkout:
rectangle
Please commit
수시로 commit을 하시고 명령어를 사용하시는 걸 권장드립니다!
강의 자료 접근 불가
0
5
0
layout group의 종류 3가지 실무 적합활용이 궁금합니다.
0
9
0
결제기능까지 알려주실수있나요?
1
18
2
보안 점검
1
17
2
스케쥴 설정 질문
0
24
2
강의영상 버퍼링
1
40
4
git status 에서 폴더에 파일을 생성하면 해당 파일이 수정으로 뜨는데 기존 파일 수정시에는 수정내역으로 안뜨네요 왜 그런걸까요?
0
14
1
DESIGN.md 파일이 잘못되었어요
1
45
1
mcp 연결안됌
1
62
2
Github repo Front/Backend 분리 이유가 궁금합니다.
1
35
2
CLI gemini 로그인 안됨
1
432
2
저는 Auto mode가 없어요
1
64
1
claude에 지시하는 방식 관련
0
47
1
강의 초반에 생긴 질문
1
65
1
강의 마지막에 언급하는 '다음 강의'란?
0
110
1
3-way merge에서의 conflict를 해소할 수 있는 4가지 방법
0
198
2
궁금해요
0
122
3
git checkout 되돌리기
0
270
2
git branch 결과
0
105
2
8강 git status 관련 질문
0
119
2
머지 2번째 강의 pdf가 자료에 빠져있는 것 같습니다.
0
86
1
geek 강사님!
1
93
1
git diff는 언제 사용하나요?
0
219
2
staging area 질문있습니다.
0
166
2





