브랜치 생성 / 이동 / 삭제하기

 

브랜치 생성

git branch 생성할 브랜치 이름

 

 

 

브랜치 목록 확인

git branch ( 앞에 * 표시는 현재 위치한 브랜치 )

 

 

 

브랜치 이동

git switch 이동할 브랜치

 

소스트리에서 확인 / 아직 가지가 갈라지지 않음 ( 같은 버전에 존재하기 때문에 )

checkout 명령어가 Git 2.23 버전부터 switch, restore로 분리

 

 

 

브랜치 생성과 동시에 이동하기

git switch -c 새로 만들 브랜치명 ( 전 버전에서는 git checkout -b )

 

 

 

 브랜치 삭제하기

git branch -d 삭제할 브랜치명

 

 

브랜치 강제 삭제하기

git branch -D 강제삭제할 브랜치명

지워질 브랜치에만 있는 내용의 커밋이 있을 경우
즉 다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때는 강제 삭제

 

 

 

 

브랜치 이름 바꾸기

git branch -m 기존 브랜치명 새 브랜치명

 

 

 

 

각각의 브랜치에서 서로 다른 작업해보기

main 브랜치에서 해당 작업 해보기

 

 

add-coach 브랜치에서 해당 작업 진행 해보기

 

new-teams 브랜치에서 해당 작업 해보기

 

 

결과

터미널에서 여러 브랜치의 내역 편리하게 보기 ( git log --all --decorate --oneline --graph ) 줄기도 확인 가능

 

소스트리 결과

 

 


 

 

 

서로 다른 브랜치를 합치는 두 방식

 

merge

두 브랜치를 한 커밋에 이어붙입니다.

브랜치 사용내역을 남길 필요가 있을 때 적합한 방식

merge

 

 

 

rebase

브랜치를 다른 브랜치에 이어붙입니다.

한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합

이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋다

rebase

 

 

 

 

 

merge로 합치기 ( 실습 ) 

add-coach 브랜치를 main 브랜치로 merge

 

main 브랜치로 이동

 

git merge 합칠 브랜치 // 해당 명령어로 병합

 

 

 

결과

병합 된거 확인

 

 

 

merge는 reset으로 되돌리기 가능

merge도 하나의 커밋이기 때문에 되돌리기 가능

Hard로 진행

 

merge 하기 전 해당 브랜치의 마지막 시점으로 돌아갈수 있음

 

다시 병합 해주고

 

 

병합된 브랜치는 삭제

 

 

 

 

 

 

rebase로 합치기

new-teams 브랜치를 main 브랜치로 rebase

new-teams 브랜치로 이동 ( merge때와는 반대 )
해당 명령어로 병합
main 브랜치가 뒤에 있는 상황 맨 앞으로 옮겨줘야됨
main브랜치로 이동
git merge new-teams 해당 명령어로 new-teams의 시점으로 fast-forward

 

new-teams 파일 추가 된 모습
new-teams 작업이 main에도 적용된거 확인

 

병합된 브랜치는 삭제
new-teams 제거 완료

 

 


 

 

 

충돌 해결하기

 

브랜치 간 충돌 ( 실습 ) 

파일의 같은 위치에 다른 내용이 입력된 상황

 

 

 

상황 만들기

해당 소스트리처럼 만들어짐

 

 

merge 충돌 해결하기

git merge conflict-1로 병합을 시도하면 충돌 발생

 

main 브랜치로 이동
merge를 하게되면 오류 메시지와
컴퓨터에서 어떤걸 사용할껀지 선택 하라고 나옴 ( 사진처럼 나오는 이유는 에디터때문에 )
수신 변경 사항 수락 선택 ( 충돌 부분 수정 완료 )
수정 완료 후 git add . / git commit 진행
:wq 저장 후 종료
소스트리에서 확인 해보면 main과 conflict-1 병합 된거 확인

 

 

위에 같은 상황에는 수정할게 1개 밖에 없어서 수정이 쉽지만 

만약에 당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단

git merge --abort

 

 

 

 

 

 

 

 

rebase 충돌 해결하기

conflict-2에서 git rebase main로 리베이스 시도하면 충돌 발생

 

conflict-2 브랜치로 이동
git rebase main 하게 되면 오류 메세지 나옴
git status 명령어 입력시 양 브랜치에서 이파일이 건드릴라고 한다. 선택을 해달라 메세지 나옴
merge랑 동일하게 vscode에서 선택 가능
수신 변경 사항 수락 ( 충돌 수정 완료 )

 

git add .
이번에는 commit이 아니라 continue ( 충돌이 모두 해결될 때까지 반복 )
일단 commit을 하라고 나옴 :wq 저장 후 나가기
또 다시 다른거도 충돌 났다고 수정해달라고 요청
여기선 현재 변경 사항 수락 선택 ( 선택은 자유, 수정도 가능 )

 

여기서도 git add . continue

 

저장 후 나가기 :wq
rebase 된거 확인

 

merge랑 동일하게 해결이 어려울 경우 해당 명령어 사용

 

main으로 이동 후
main을 맨 앞으로 옮기도록 merge conflict-2

 

conflict-1, conflict-2 삭제

 

 

 

 


 

 

 

SourceTree로 진행해보기

 

소스트리에서 브랜치 생성

 

 

 

vscode에서 Tigers 변경

소스트리에서 커밋 버튼 클릭 후

변경한 파일 스테이지에 올린 후 

Edit Tigers manager 커밋 메세지 작성 후 커밋

 

 

 

 

 

to-merge 브랜치 변경
Tigers의 coach를 Ruth로 변경
동일하게 소스트리에서 커밋

 

 

 

 

to-rebase 브랜치로 이동
Tigers의 memebers에 Tyler 추가
소스트리에서 커밋 진행
브랜치 탭에서 브랜치 더블 클릭시 브랜치 이동도 가능

 

 

 

 

 

 브랜치를 이동하며 파일 살펴보기

 

 

merge

소스트리에서 main으로 브랜치 이동 후

이동 시킬 브랜치 우클릭 현재 브랜치로 병합 클릭

to-merge 병합 완료

 

 

 

 

 

 

rebase

소스트리에서 to-rebase 브랜치로 이동 후 

main 브랜치 우클릭 ...재배치 클릭

main브랜치로 이동

to-rebase 우클릭 병합 ( merge )

뒤에 있던 main을 맨 앞 to-rebase랑 동일 선상 둠

 

 

 

 

 

 

to-merge와 to-rebase 우클릭하여 삭제
강제 삭제 체크 후 확인
완료 된 모습

 

 

 

 

 

merge 충돌 해결해보기

( rebase는 충돌 가능시 CLI로 진행 권장 ) 

 

실습 내용
실습내용 입력 후 merge하여 충돌 시켜보기
충돌메세지와 맨 앞에 커밋하지 않은 변경사항 생성 됨
vscode 확인 해보면 충돌난 내용 확인
충돌 내용 해결 완료 됫으면 저장 후 다시 소스트리로
스테이지 모두 올리기
커밋
충돌 해결하고 병합(merge)된거 확인

 

 

https://www.youtube.com/@yalco-coding 얄코님 유튜브 내용 정리 ( 개인 공부용 )

+ Recent posts