Git과 Github (2)

byeol·2023년 3월 25일
0
post-thumbnail

brach와 merge에 대해서 정리했다.

먼저 내가 공부한 책은 아래와 같다.
노션으로도 제공하고 있고 알라딘에서 ebook으로 무료 다운로드가 가능하다. 무엇보다 유튜브로 강의도 제공하고 있다.

알아서 잘 딱 깔끔하고 센스있게 정리하는 GitHub 핵심 개념

<모든 그림의 출처는 위 책에서 가져왔습니다.>


branch

branch를 별도의 작업을 하고 합칠 때 사용한다.

즉 branch는 독립적인 작업을 할 수 있는 공간으로 개별적인 작업 공간을 만들고 거기서 각각의 기능 개발을 진행한다.

개리가 작업한 내용이 github의 main에 있고 이 이후부터 작업을 나눠서 해야한다면

빙키는 github main에 있는 내용을 clone한 뒤에 branch를 만들어서 그 이후로 개별 작업을 한다.

개리도 마찬가지로 빙키과 일을 나눠서 해야하는 시점에서 별도의 branch를 만들어서 작업한다.

이후 두 사람의 내용을 main에 병합하는 작업이 필요하다.
그러나 두 사람이 같은 부분을 다르게 수정했다면 합치는 과정에서 충돌이 일어난다. 그러면 관리자는 해당 충돌이 일어난 시점을 찾아서 두 사람이 수정한 부분 중에서 어떤 사람의 수정본을 선택할 것인지 결정하면 된다.

또한 branch는 단순히 다른 기능을 개발하는 것에만 활용되는 것이 아니라
급하게 버그를 수정해야 하는 상황에서 기존의 것을 commit하고

이전 기능 작업 중인 상태로 branch를 만들어서 버그를 잡는 방식으로 진행해서 합치는 방법에도 활용된다.

사용방법

  • 현재 브랜치 목록과 현재 브랜치 확인

    git branch
  • branch 만들기

    git branch 새로만들브랜치명
  • checkout
    checkout는 브랜치를 변경 또는 복원하는 등 많은 기능을 담당하기 때문에 이 기능들을 좀 더 구체적으로 나눈 switch와 restore 기능이 Git 2.23에 도입되었다.

  • 브랜치 이동

    git checkout 이동할브랜치명
  • switch 브랜치 변경

    git switch 이동할브랜치명

    -c으로 새로 만들고 변경하는 것도 가능하다.

     git switch -c 이동할브랜치명
  • restore 파일 수정 내용 복원과 add를 통해서 스테이지 올린 파일 빼내기
    1) restore을 이용하여 변경 사항 되돌리기

    git restore 파일명

    2) 물론 더 넓은 범주인 checkout에서도 가능

    git checkout -- 파일명

    3) 스테이지 올린 파일 빼내기

    git restore --staged 파일명

    4) reset 명령어를 통해서도 가능

    git reset HEAD 파일명
  • branch 삭제하기

    git branch -D 삭제할브랜치명

    소문자 d도 가능하다

  • branch 복구

    • 1단계 먼저 복구시점 확인하기
       git reflog

      그러면 가장 최근의 첫번째 커밋 메세지를 바탕으로 HEAD가 가리킨 시점의 해시값을 찾는다.
      여기서는 4e55c00이다.
    • 2단계 복구 시점으로 되돌리기
        git checkout -b <삭제한 브랜치명> <커밋해시값>

merge하기

이제 각자 branch에서 작업한 내용을 main과 병합해야 한다.

위 그림과 같이 main은 각 branch의 앞 상황에 놓여져 있고 이를

위 그림과 같이 병합해야 한다.

그러기 위해서 각 branch마다 merge를 진행해야 한다.
각 branch는

git checkout main
git merge main과합칠브랜치명
git push origin main

즉 main으로 branch를 변경하고 main과 합치고자 하는 branch를 merge하고
이 내용을 원격저장소에 보내는 것이다.

conflite

그러나 branch들끼리 같은 파일의 같은 부분을 수정했다면 충돌이 발생하고
그 과정에서 충돌이 발생한 시점을 찾아서 둘 중에 무엇을 선택할지 결정하면 된다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글