인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

BANG님의 프로필 이미지

작성한 질문수

Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]

git checkout, revert 관련 문의

해결된 질문

작성

·

24

0

  1. main브랜치에서 커밋을 1, 2, 3을 생성했는데, 커밋 2버전에서 새로운 브랜치를 생성해서 작업을 진행하려면 어떻게 해야 하나요??

    1. checkout으로 HEAD가 해당 커밋(2번 커밋)을 가리키게 하고 거기서 브랜치를 생성하여 작업진행하는 걸까요?

    2. 아니면 revert?로 3에서 2로 변경된 내용을 새로 커밋하여 최신커밋(main commit 4)이 2의 내용을 가리키게 하여 거기서 브랜치를 새로 만드는 걸까요??

git commit - m "main commit 1"
git commit - m "main commit 2"
git commit - m "main commit 3"
git checkout 1234567  # <- main commit 2 이동
git branch test
git checkout test

#===========================================
git commit - m "main commit 1"
git commit - m "main commit 2"
git commit - m "main commit 3"
git revert 1234567 # <-  main commit 2 내용으로 새로운 commit 생성
git branch test
git checkout test

 

)) revert의 내용을 잘 이해한건 맞겠죠??;;;;;

답변 2

1

geek님의 프로필 이미지
geek
지식공유자

안녕하세요, BANG 님 😀
일단, revert 개념에 대해 말씀드려요!

revet는 커밋의 내용을 거꾸로 수행하는 커밋을 새로 만들 뿐, 커밋 히스토리를 바꾸지 않아요.
그러니까, commit 4는 commit 2가 아니라 commit 3를 가리키게 됩니다.

정리하자면, revert후의 커밋 히스토리는 아래와 같은 모양이 됩니다.

commit4 -> commit3 -> commit2 -> commit1 (commit 4와 commit2는 내용은 같지만 별개의 커밋.)

 

Q.
"main브랜치에서 커밋을 1, 2, 3을 생성했는데, 커밋 2버전에서 새로운 브랜치를 생성해서 작업을 진행하려면 어떻게 해야 하나요??"

A. checkout을 사용하셔도 되고 revert를 사용하셔도 됩니다. 방법의 차이일 뿐 그 결과는 거의 같아요. 다만, checkout을 사용하면, test브랜치는 commit2를 가리킬테구요. revert를 사용하면, test 브랜치는 commit4를 기리키게 됩니다.

 

추가적으로 궁금하신 부분이 있다면, 언제든 질문해주세요!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. BANG님, Git 브랜치 생성과 관련된 질문을 주셨군요.

두 가지 방법의 차이 설명

  1. Checkout 후 브랜치 생성:

    • 커밋 2로 이동하여 새로운 브랜치를 생성하는 방법입니다. 이는 과거의 커밋으로 시간여행을 한 뒤 그 시점에서 새로운 작업을 시작하려는 경우에 유용합니다.
    • git checkout <commit_hash>로 커밋 2(1234567)로 이동한 후, git branch testgit checkout test를 통해 새로운 브랜치를 만들어 작업을 시작합니다.
    • 이 방법은 커밋 2 이후의 커밋(3)을 그대로 두고, 별도의 작업 흐름을 시작할 수 있도록 합니다.
  2. Revert 후 브랜치 생성:

    • 커밋 3에서 커밋 2의 내용을 반영한 새로운 커밋(즉, revert 커밋)을 생성한 후 작업을 시작하는 방법입니다.
    • git revert 명령어를 사용하여 커밋 2의 변화만큼을 되돌리는(즉, 취소하는) 새 커밋을 만든 뒤, git branch testgit checkout test로 새로운 브랜치를 생성합니다.
    • 이 방법은 main 브랜치의 최신 상태를 유지하면서 특정 변경 사항만 취소하고 싶을 때 사용합니다.

Revert 이해 확인

  • git revert <commit_hash>는 지정한 커밋의 변경내용을 되돌리는 새로운 커밋을 생성합니다. 따라서 원본 커밋이 무효화되는 것이 아니라, 그에 대응되는 반대되는 변경사항을 포함한 추가적인 커밋이 생성됩니다.

최적의 해결책

  • 첫 번째 방법 (checkout 후 브랜치 생성) 방법이 간단하고 명확할 수 있습니다. 과거의 특정 커밋에서 새로운 작업을 시작하고 싶다면 이 방법을 사용하는 것이 좋습니다. 이후 변경 사항들을 원래 브랜치에 병합할 것인지 아니면 독립적으로 유지할 것인지는 작업 상황에 따라 결정할 수 있습니다.

다음 링크에서 추가적인 정보와 유사한 질문을 확인하실 수 있습니다:
- Git 브랜치 생성 및 관리

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

BANG님의 프로필 이미지

작성한 질문수

질문하기