파일별 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을 하시고 명령어를 사용하시는 걸 권장드립니다!
깃 풀(git pull)에 대한 궁금증이 있습니다!
0
14
1
섹션7 수업자료 업로드 부탁드립니다.
0
22
2
gitforwindows에서 맥은 뭘 다운받아야 하나요...?
0
31
2
d-day count소스및 그라비티에서 기술하면 뭔가 내용이 안나오네요
0
21
1
간단한 사이드 프로젝트 작성에도 Max 요금제를 결제하는게 좋을까요?
0
57
2
git 커밋한 내용 궁금합니다.
0
27
1
충돌의 최소화 파트 질문입니당!
0
28
1
자바스크립트 파일 중, DOM 영역에서 querySelector가 아닌 다른 함수를 쓰는데 괜찮을까요?
1
81
2
48강에 필요한 아스키아트 자료가 첨부되어 있지 않습니다.
0
54
2
mac python 3.10 - permission denied
0
54
1
26강 [게임 메인 루프 및 메뉴 구현]에서 2가지 오류가 있어서 남기게 되었습니다.
0
69
2
Rider에서 .ignore 플러그인으로 .gitignore 파일 내용 생성시 Csharp으로 검색되는 내용이 없습니다.
1
67
2
EC2 설정보다 RDS를 먼저 설정하는 이유
0
102
1
pull할때
0
41
1
강의 마지막에 언급하는 '다음 강의'란?
0
85
1
3-way merge에서의 conflict를 해소할 수 있는 4가지 방법
0
136
2
궁금해요
0
85
3
git checkout 되돌리기
0
214
2
git branch 결과
0
90
2
8강 git status 관련 질문
0
74
2
머지 2번째 강의 pdf가 자료에 빠져있는 것 같습니다.
0
69
1
geek 강사님!
1
77
1
git diff는 언제 사용하나요?
0
179
2
staging area 질문있습니다.
0
138
2

