개인 공부를 하며 정리한 글입니다.
틀린 부분, 수정할 부분이 있다면 언제든 피드백 환영입니다 :)
1편에서 시간 관리에 대해 알아보았다면, 2편에서는 차원관리에 대해 알아보겠습니다.
1. Branch : 분기된 가지 (차원 관리)
- 프로젝트를 하나 이상의 모습으로 관리해야 할 때
- 예) 실배포용, 테스트서버용, 새로운 시도용
- 여러 작업들이 각각 독립되어 진행될 때
- 예) 신기능 1, 신기능 2, 코드개선, 긴급수정...
- 각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합
2. Branch 생성, 이동, 삭제하기
1) Brach 생성
# add-coach 란 이름의 Branch를 생성
$ git branch add-coach
# Branch 목록 확인
$ git branch
2) Branch 이동
# 현재의 main Branch에서 add-coach Branch로 이동하기
$ git switch add-coach
- 기존의 checkout 명령어가 Git 2.23 버전부터 switch, restore,checkout 3개로 분리
📢 브랜치 생성과 동시에 이동하기
$ git switch -c 새 브랜치명
3) Branch 삭제
$ git branch -d (삭제할 브랜치명)
📢 독립 브랜치 삭제하기
지워질 브랜치에만 있는 내용의 커밋이 있을 경우
즉 다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때는
-d 대신 -D(대문자)로 강제 삭제해야 합니다.
$ git branch -D (강제삭제할 브랜치명)
4) Branch 이름 변경
$ git branch -m (기본 브랜치명) (새 브랜치명)
3. 결과 살펴보기
기존의 git log 명령어는 위치한 브랜치에서의 내역만 볼 수 있는 단점이 있었다.
여러 브랜치의 내역 편리하게 보려면 아래의 명령어를 입력하면 된다.
$ git log --all --decorate --oneline --graph
4. Branch 합치는 2가지 방법
merge | rebase |
두 브랜치를 한 커밋에 이어붙인다. | 브랜치를 다른 브랜치에 이어붙인다. |
브랜치 사용내역을 남길 필요가 있을 때 적합한 방식 | 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합 |
메인 브랜치에서 실행 | 서브 브랜치에서 실행 |
이미 팀원과 공유된 커밋들에 대해서는 사용하지 말 것 |
1) merge
먼저 merge할 브랜치(여기서는 main 브랜치)로 이동
git merge 현재 브랜치와 합칠 브랜치명
- merge도 commit 의 일종이므로 reset 이 가능하다.
- merge하기 전 해당 브랜치의 마지막 시점으로
1-1 ) 병합된 브랜치 삭제
git branch -d 삭제할 브랜치명
2) Rebase
❗ merge와는 반대로 메인이 아닌 서브 Branch에서 실행해야 한다.
$ git rebase main
남은 new-teams 브랜치로 가서 실행.
하지만 여기서 문제점이 있다. main 브랜치가 뒤쳐저 있는 상황이 발생해버린 것이다.
즉, main 브랜치에서는, new teams에서 작업한 add team Pumas, add team Jaguars 2 개가
반영이 안된다는 것이다.
이럴 경우는 main 브랜치에서 new-teams를 merge 해버리면 된다.
# main 브랜치에서
$ git merge new-teams
한줄요약 : rebase 적용 후, 메인 브랜치에 가서 merge 필수
5. Branch 충돌 해결
1) merge 충돌 해결하기
- 파일의 같은 위치에 다른 내용이 입력된 상황
VScode에서는 아래 빨간 박스 부분의 선택지를 골라서 실행하면 된다.
<<<<< : 메인 브랜치
>>>>> : 서브 브랜치
txt 파일에서 작업한다면 필요한 부분 (여기서는 4 or 6 행) 만 남기고 3 ~ 7열 사이를 다 지우면 된다.
만약 충돌이 너무 많아 당장 merge는 하지 않고 중단시키려고 한다면,
$ git merge --abort
해결 가능 시 충돌 부분을 수정한 뒤 git add ., git commit으로 병합 완료
2) rebase 충돌 해결하기
merge와 마찬가지로 충돌된 부분에서 선택지를 골라주는 흐름은 같다 .
단 명령어의 차이가 있을 뿐이다.
- 오류 메시지와 git status 확인
당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단
$ git rebase --abort
해결 가능 시
- 충돌 부분을 수정한 뒤 git add .
- 아래 명령어로 계속
$ git rebase --continue
- 충돌이 모두 해결될 때까지 반복
그리고 상단에서 배운
한줄요약 : rebase 적용 후, 메인 브랜치에 가서 merge 필수
이것도 빼먹지 말자.
위와 같은 결과를 실습하면서 보시고 싶으시면 얄코님의 Git & GitHub강의를 참고해주세요.
https://www.yalco.kr/@git-github/0-1/
'DevOps > Git' 카테고리의 다른 글
Github 에서 원격 저장소를 만들어 보자 (0) | 2024.03.20 |
---|---|
git 의 3가지 트리 그리고 rm, mv, restore, reset 옵션 (0) | 2022.06.30 |
SVN(Subversion) 과 Git 의 차이 (0) | 2022.06.30 |
Git, GitHub 사용하기 기초 3(pull, push, fetch) (0) | 2022.06.29 |
Git, GitHub 사용하기 기초 1 (init, add, commit, reset, revert) (0) | 2022.06.27 |