본문 바로가기
CS

GIT Bash를 이용해서 브랜치 생성 및 머지를 해보자!

안녕하십니까

코딩하다 늦잠 잔 하프 입니다.

 

이번에는 Git Bash를 이용해서 브랜치를 생성해보고 머지를 해보도록 하겠습니다.

 

📝 목차

 

 


깃허브에서 새롭게 저장소를 하나 만들어주겠습니다.

 

 

git remote를 이용하여 저장소와 연결시켜주면 됩니다 😊

구글링 또는 이전 글에 정보가 있으니 참고하여 주시길 바랍니다!

 

 

브랜치 생성&삭제

브랜치 구조

git branch를 이용하여 새로운 브랜치를 만들 수 있습니다.

브랜치는 버전관리를 하기 위해서 만들기 위함이라고 보시면 됩니다.

 

제가 회사들을 다녀보면서 구조들을 보아온 결과..

아래와 같은 구조를 많이 사용하더라구요.

이와 유사한 형태로 만들어보도록 하겠습니다.

prd
└─ dev
    └─ feat-[이슈 번호]
    └─ feat-[이슈 번호]
    ...

 

 

아무래도 좀 더 큰 규모의 업체들은 브랜치의 구조가 많이 늘어날것으로 봅니다.

 

 

브랜치 삭제 : git branch -D [브랜치 명]

만일 브랜치명을 잘못 생성하였다면 해당 명령어로 삭제해주시면 됩니다.

git branch -D feaet001

 

 

브랜치 생성 : git branch [브랜치 명]

다음과 같은 구조를 만들기 위해 브랜치를 생성하여 줍니다.

git branch prd
git branch dev
git branch feat-001
git branch feat-002

 

 


브랜치 변경

git checkout

git checkout을 이용해 브랜치를 변경할 수 있습니다.

git branch feat-001로 이동해보도록 하겠습니다.

git checkout feat-001

 

 

feat-001에서 document2.txt를 추가해주도록 합니다.

그리고 저장소로 추가해주도록 하겠습니다.

git add document2.txt
git commit -m 'feat 001'
git push orgin feat-001

 

 

feat-001에 document.txt추가가 된것을 볼 수 있습니다.

 

 

다른 브랜치를 보면 PR(Pull Request)가 필요하다고 나와있습니다.

이 과정은 머지(Merge)가 필요하여 그렇습니다.

 


브랜치 병합

git merge

위에서 생성된 브랜치 (feat-001)을 dev 브랜치로 병합을 시켜보도록 하겠습니다.

우선 병합하고자 하는 부모 브랜치로 이동을 먼저 해줍니다.

그런 후git merge [병합하고자 하는 브랜치] 를 입력하여 줍니다.

 

git checkout dev
git merge feat-001
git push orgin dev

 

 

dev 브랜치로 잘 병합이 된것을 볼 수 있습니다.

이후로도 prd로 머지하도록 하겠습니다.

git checkout prd
git merge dev
git push orgin prd

 

 

git cherry-pick [commit id]

cherry-pick은 조금 생소하실 수 있습니다.

다른 브랜치에 있는 특정 커밋을 병합하고 싶을 때 사용합니다.

웬만하면... 사용은 안하지만, 브랜치의 구조를 정리할때도 쓰입니다.

 

 

feat-002 브랜치를 이용하도록 하겠습니다.

feat-002 브랜치에서 document3.txt 파일을 만들어주도록 할게요.

vim document3.txt 
git add document3.txt
git commit -m "add : document3.txt"
git push orgin feat-002

 

 

dev 브랜치로 이동 후 document3.txt 추가한 커밋만 가져오도록 하겠습니다.

commit id 를 확인하기 위해서는 git log를 이용 하면 확인할 수 있습니다.

 

 

저의 경우는 commit id가200592b960c7583c4bac079fd5816f0e68b4400a이거 인것을 확인할 수 있네요.

이것을 이용해서 dev 브랜치와 병합을 진행해보도록 하겠습니다.

 

git checkout dev
git cherry-pick 200592b960c7583c4bac079fd5816f0e68b4400a
git push orgin dev

 

dev 브랜치에도 잘 병합이 된것을 볼 수 있습니다.

 


롤백

되돌리는 방법은 여러가지가 있지만, git revert를 추천한다고 합니다.

git reset의 경우는 이전 커밋들을 삭제하는 반면, git revert의 경우는 새로운 커밋으로 만들어 사용한다고 합니다.

 

아까운 코드들이 날아갈 수 있으니 git revert가 안정성 있고 좋을듯 합니다 🥹

 

dev 브랜치에서 진행을 해보도록 하겠습니다.

git checkout dev
git log

 

완전 초기로 돌리기 위해 git log로 초기의 commit id를 확인해주시면 됩니다.

저의 경우는44ce8aa9079761524b86be8f43b284af2cfad414이렇게 되어 있네요

 

git revert

git revert의 사용법은 다음과 같습니다.

git revert [변경하고자 하는 commit id]..[변경될 현재 commit id] 

 

저의 현재 commit id는377ced52c651b8bbaaec99f3dd82651e74ca0608

변경할 commit id는 44ce8aa9079761524b86be8f43b284af2cfad414 로 하겠습니다.

 

git revert 44ce8aa9079761524b86be8f43b284af2cfad414..377ced52c651b8bbaaec99f3dd82651e74ca0608
git push orgin dev

 

 실행하게 되면 어떤 vim 화면이 뜨게 될텐데, 뜨는 이유는 혹시라도 병합할건데 제외할 파일이 있느냐고 해서 물어보는 겁니다.

파일 내에 있는 #을 지워주게 되면 그 파일은 무시됩니다.

그대로 :q 또는 :wq를 눌러서 나와주시면 됩니다.

 

 

그러면 이렇게 dev브랜치에는 초기에 커밋되었던 기록만 남아있게 됩니다.

 

 

33커밋이나 있는데.. 좀 많이 시도해서 그렇습니다 하핫....😅

하다보면서 저도 새롭게 알게되는것도 있네요

 

 

'CS' 카테고리의 다른 글

GIT Bash로 커밋, 푸시를 해보자!  (0) 2024.06.08
0.1 + 0.2 != 0.3 ... ?  (0) 2024.05.23
소수점 진법 변환을 알아보자!  (2) 2024.05.21
진법 변환을 알아보자  (4) 2024.03.24
자바스크립트 동작 원리  (2) 2024.03.17