inflearn logo
강의

講義

知識共有

Git & GitHub、原理から一歩ずつ - 根本Git [AI吹き替え]

HEAD #git checkout

파일별 git checkout

解決済みの質問

94

nonanswer94

投稿した質問数 3

0

안녕하세요.

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

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

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

감사합니다.

git github

回答 1

0

communityai8509

안녕하세요, 인프런 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

nonanswer94

감사합니다.

추가 질문이 있는데요, 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을 하시고 명령어를 사용하시는 걸 권장드립니다!

강의영상 버퍼링

0

15

3

git status 에서 폴더에 파일을 생성하면 해당 파일이 수정으로 뜨는데 기존 파일 수정시에는 수정내역으로 안뜨네요 왜 그런걸까요?

0

6

1

DESIGN.md 파일이 잘못되었어요

1

33

1

mcp 연결안됌

1

56

2

Github repo Front/Backend 분리 이유가 궁금합니다.

1

30

2

CLI gemini 로그인 안됨

1

250

2

저는 Auto mode가 없어요

1

55

1

claude에 지시하는 방식 관련

0

38

1

강의 초반에 생긴 질문

1

60

1

frontend/backend 분리개발시

0

61

2

prd생성 관련 소스..

0

58

2

왜 여기서는 둘 다 선택해서 하는걸 안알려주는지 궁금하네요

0

43

1

cherry pick 질문입니다.

0

52

2

supabase연결이 쉽지 않네요

0

72

2

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

0

107

1

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

0

197

2

궁금해요

0

119

3

git checkout 되돌리기

0

266

2

git branch 결과

0

103

2

8강 git status 관련 질문

0

114

2

머지 2번째 강의 pdf가 자료에 빠져있는 것 같습니다.

0

83

1

geek 강사님!

1

91

1

git diff는 언제 사용하나요?

0

217

2

staging area 질문있습니다.

0

164

2