inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Git & GitHub, 원리부터 차근차근 - 근본깃 [AI 더빙]

HEAD #git checkout

파일별 git checkout

해결된 질문

71

yuntae.kang

작성한 질문수 3

0

안녕하세요.

git checkout [commit ID] 를 통해 예전의 커밋으로 되돌릴 수 있다고 배웠는데요.

현재 working directory에 rectangle 및 circle 이 있고, 현재 커밋 버전이 3일 때,
- rectangle 파일은 커밋 2로 되돌리고,
- circle 파일은 커밋 1로 되돌리고 싶을 경우
각각의 파일에 대하여 다른 버전의 커밋으로 되돌리는 것이 가능한지 궁금합니다.

실무에서는 이런 일이 빈번하게 일어날 것으로 예상이 되어서요.
이를테면 a 파일에 버그가 난 걸 모른 채로 b 파일을 작업해서 커밋을 완료했는데, a 파일의 버그를 뒤늦게 발견하여 되돌리고자 하는데 이때 b 파일의 작업 내역은 되돌리고 싶지 않을 수 있으니까요.

감사합니다.

git github

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. yuntae.kang님께서 Git에서 특정 파일을 여러 커밋으로 개별적으로 되돌리는 방법에 대해 질문해 주셨군요.

파일별 특정 커밋 상태로 되돌리기

Git은 각 파일을 개별적으로 이전 커밋 상태로 복원할 수 있는 기능이 있습니다. 이를 위해 주로 git checkout 명령어를 사용합니다.

예를 들어, rectangle 파일을 커밋 2로 되돌리고, circle 파일을 커밋 1로 되돌리고 싶다면 다음과 같은 절차를 따를 수 있습니다:

  1. 특정 파일 되돌리기
    • rectangle 파일 복원:
      
      git checkout <commitID2> -- rectangle
      

    • circle 파일 복원:
      
      git checkout <commitID1> -- circle
      

위 명령어를 사용하면, 지정한 파일만 해당 커밋의 상태로 복원됩니다. 이때 복원된 파일은 워킹 디렉토리에 반영되어 커밋하지 않으면 다른 파일에는 영향을 미치지 않고 남아 있습니다.

참고 사항

  • 복원된 파일 커밋: 필요한 경우, 복원한 파일들을 새 커밋으로 남기면 변경 사항을 영구적으로 보존할 수 있습니다.
    
    git add rectangle circle
    git commit -m "Revert rectangle to commit 2 and circle to commit 1"
    

이 방법은 특정 파일에 대해 필요한 커밋으로 되돌리는 융통성 있는 접근법을 제공합니다. 실무에서도 버그 수정 및 이와 같은 파일 단위의 롤백이 필요할 때 유용하게 사용됩니다.

추가로, 해당 내용과 관련된 참고 링크를 제공해 드립니다:
- Git checkout을 사용한 파일별 복원 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

1

yuntae.kang

감사합니다.

추가 질문이 있는데요, git checkout [commit ID] 명령어는 현재 working directory의 tracked 파일들과 staging area 의 파일들을 해당 commit 의 상태로 되돌린다고 배웠는데요.

만약... 최종 커밋 이후 working directory에서 작업을 수행하다가, 실수로 git checkout 을 입력해버리면, 다시 기존의 (커밋되지 않은) working directory는 복구할 수 없는 것일까요?

0

geek

안녕하세요, yuntae.kang 님 :)
git은 복구하지 못하는 코드가 남아있을 땐, git checkout 명령어를 막아요!
그래서 아래와 같은 오류만을 던지고 git checkout 명령어를 사용하지 못하는 경우가 있습니다.

error: Your local changes to the following files would be overwritten by checkout:

rectangle

Please commit


수시로 commit을 하시고 명령어를 사용하시는 걸 권장드립니다!

섹션7 수업자료 업로드 부탁드립니다.

0

19

2

gitforwindows에서 맥은 뭘 다운받아야 하나요...?

0

31

2

d-day count소스및 그라비티에서 기술하면 뭔가 내용이 안나오네요

0

21

1

간단한 사이드 프로젝트 작성에도 Max 요금제를 결제하는게 좋을까요?

0

55

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

101

1

pull할때

0

41

1

기획과 개발 반복 실습 질문

0

137

1

강의 마지막에 언급하는 '다음 강의'란?

0

85

1

3-way merge에서의 conflict를 해소할 수 있는 4가지 방법

0

136

2

궁금해요

0

85

3

git checkout 되돌리기

0

213

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