※Branch : 분기된 가지(다른차원)
-프로젝트를 하나 이상의 모습으로 관리해야 할 때 ex)실배포용, 테스트서버용, 새로운 시도용
-여러 작업들이 각각 독립되어 진행될 때 ex)신기능1, 신기능2, 코드개선, 긴급수정... / 각각의 차원에서 작업한 것을 메인에 통합 등
-이 모든 것을 하나의 프로젝트 폴더에서 진행할 수 있게 함
-각각의 작업을 서로 다른 차원에서 작업 후 적용이 확정된 것을 메인브랜치로 가져와서 사용자에게 선보일 수 있다.
#여러 branch 만들어보기
※ 브랜치 생성 / 이동 / 삭제하기
-git branch 브랜치이름 : '브랜치이름'이라는 이름의 브랜치 생성

-git branch 로 branch 목록과 현재 branch를 알 수 있음(* branch 이름으로 표시)

-git switch 이동할 브랜치 : '이동할 브랜치'로 이동(Git 2.23부터는 checkout명령어가 switch, restore로 분리)
-git switch -c 생성할브랜치명 : 브랜치 생성과 동시에 이동하기
-git branch -d 삭제할브랜치명 : 해당 브랜치 삭제
-git brahcn -D 강제삭제할브랜치명 : 지워질 브랜치에만 있는 내용의 커밋이 있을 경우(다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때)
-git branch -m 기존브랜치명 새로운브랜치명 : 새로운 브랜치명으로 이름 바꾸기
※결과 확인하기
-각 브랜치에서 수정, 파일 생성 후 각각 커밋을 하고 그 내역을 git log에서 각 branch마다 다르게 살펴볼 수 있고, 여러 브랜치의 내역을 편리하게 보려면 git log --all --decorate --oneline --graph로 확인할 수 있다.(텍스트)

-소스코드에서는 이보다 더 편하게 한눈에 들어오게 볼 수 있다.

#branch를 합치는 두 가지 방법(merge, rebase)
※ 서로 다른 브랜치를 합치는 두 방식
@merge : 두 브랜치를 한 커밋에 이어붙인다(히스토리o)
-브랜치 사용내역을 남길 필요가 있을 때 적합한 방식
-다른 형태의 merge에 대해서도 이후에 다룸
-합쳐진 브랜치에는 두가지 다른 브랜치의 모든 작업들이 담기게된다
@rebase : 브랜치를 다른 브랜치에 이어붙인다(히스토리x)
-한 줄로 깔끔히 정리된 내역을 유지하기 원할 대 적합
-이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋다.
1. merge로 합치기
주가 되는 브랜치를 A라고 하고 합칠 브랜치를 B라고 하면 브랜치 A로 이동 후 B를 merge해주면 된다.
ex)add-coach 브랜치를 main 브랜치로 merge
-main 브랜치로 이동
- git merge 합칠브랜치이름 명령어로 병합 -> git merge add-coach
-소스트리에서 확인
-merge는 reset으로 되돌리기 가능
- git branch -d 머지된브랜치이름 병합된 브랜치는 삭제 -> git branch -d add-coach

2.rebase로 합치기 - merge와 반대
ex)new-teams 브랜치를 main브랜치와 rebase
-rebase할 브랜치로 이동(git switch rebase할브랜치)
-git rebase 합칠브랜치이름 명령어로 병합 -> git rebase main
-rebase한 new-teams보다 main브랜치가 뒤쳐져 있다.

-main을 new-teams위치로 옮겨주기 위해서 merge를 해야 한다 -> git merge new-teams

#브랜치 간 충돌 해결하기(파일의 같은 위치에 다른 내용이 입력된 상황)
1. merge 충돌 해결하기
-오류 메세지와 git status 확인
-VS Code에서 해당 부분 확인
-충돌한 부분이 많아 merge를 중단하겠다 하면 git merge --abort 명령어를 사용해서 merge 중단
-충돌한 부분에서 아래 보기들을 사용해도 되고 직접 수정도 가능
Accept Current Change : 해당 옵션을 선택할 경우 현재 위치한 branch의 수정사항을 갖고간다.
Accept Incoming Change : 해당 옵션을 선택할 경우 merge한 branch의 수정사항을 갖고간다.
Accept Both Changes : 해당 옵션을 선택할 경우 두 branch 모두의 수정사항을 갖고 간다.
Compare Changes : 해당 옵션을 선택할 경우 충돌된 부분을 확인하기 위한 화면을 split해서 보여준다.
-수정이 끝나면 git add . , git commit -m 커밋메세지 또는 git commit 후 자동 입력메세지가 뜨면 :wq로 저장 후 종료
2. rebase 충돌 해결하기
-충돌과정을 따로따로 차례로 해결해줘야 한다
-git switch rebase할브랜치 로 이동 후 git rebase 합칠브랜치 를하면 오류가 뜨고 git status로 확인을 하면 이유를 확인할 수 있다.
-당장 충돌 해결이 어려울 경우 git rebase --abort 명령어로 merge 중단
-충돌한 부분을 수정한 뒤 git add. 해준다.
-오류가 여러개일 경우 한개 해결 후 git rebase --continue 명령어로 작업을 계속
-모든 충돌을 해결하면 git add . , git commit 해준다.
'Git & GitHub' 카테고리의 다른 글
| [Git] GitHub / push & pull (0) | 2022.04.06 |
|---|---|
| [Git] 시간 여행하기 (0) | 2022.04.04 |
| [Git] Git 시작하기 (0) | 2022.04.03 |
댓글