본문 바로가기

얄코의 too much친절한 깃&깃허브-Chapter3. 차원 넘나들기

by nyeongha 2024. 6. 22.

Chapter3.차원 넘나들기

Lesson9.여러 브랜치 만들어 보기

브랜치로 차원 분기하기

깃 브랜치를 사용하면 폴더를 백업하지 않아도 원하는 시점마다 차원을 나눠서 작업했다가, 필요하면 원하는 차원으로 자유롭게 작업내용을 되돌리거나 통합할 수 있음.
깃에서는 차원을 브랜치(branch)라고 함.
브랜치도 원하는 시점마다 여러 차원으로 나눠질 수 있음.
이것을 '브랜치를 분기한다.' 라고 표현.
작업 내역을 여러 브랜치, 즉 여러 차원으로 나눌 필요가 있는 경우는 크게 두가지로 나뉨.

1.하나의 프로젝트를 여러 형태로 사용해야될 때

-서로 다른 페이지를 맡아 공동작업을 하는 경우
-테스트용 서버에 올리는 테스트 브랜치를 여러개 만들 수 있음

2.현업에서 여러 개발자가 역할을 분담해서 프로그래밍을 할 때

-특정한 기능을 추가하는 브랜치
-오류를 개선하는 브랜치
-긴급한 수정 사항을 다루는 브랜치

브랜치가 없으면 불완전한 기능이 서로 충돌하면서 오류를 일으킬 수 있음

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

1.메인 브랜치가 기본값

2.브랜치를 추가하려면 git branch 명령을 사용하고 뒤에 새 브랜치 이름 을 입력함

git branch 새브랜치명

3.현재 가지고있는 브랜치 목록을 살펴보려면 git branch 명령을 입력함.

4.브랜치를 이동할 때는 git switch 명령을 사용하고 뒤에 이동할 브랜치 이름 을 입력

git switch add-coach

 

5.소스트리에서 브랜치 확인

6.git switch 명령으로 main브랜치로 돌아오기

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

1.git switch 명령어 뒤에 -c(create)와 새 브랜치 이름이름을 입력함.

깃 2.23버전 이전에는 'git checkout -b 새 브랜치 이름'을 사용함

2.git branch명령으로 현재 브랜치 목록 확인
현재 브랜치는 새로 생성한 new-teams임을 알수있음.

브랜치 이름 바꾸기/삭제하기

브랜치 이름을 바꾸려면 git branch명령어 뒤에 브랜치 이름을 바꾸는 옵션인 -m(modify)과 기존 브랜치 이름새 브랜치 이름을 각각 입력.

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

 

브랜치를 삭제하려면 git branch 명령어 뒤에 -d(delete)와 삭제할 브랜치 이름을 입력함

git branch -d (삭제할 브랜치 이름)

 

1.깃 브랜치 생성(to-delete)->git branch명령으로 브랜치 목록 확인

git branch

 

2.to-delete브랜치이름을 to-erase로 변경

git branch -m to-delete to-erase
git branch

 

3.소스트리에서 변경된 브랜치 이름 확인

 

4.to-erase브랜치를 삭제

git branch -d to-erase

 

브랜치 강제 삭제

삭제할 브랜치에만 있는, 즉 다른 브랜치로 가져오지 않은 커밋이 있는 브랜치를 지울때는 소문자 -d대신 대문자 -D를 입력해 강제 삭제.
소문자 -d로 삭제되지않도록 한것은 다른 브랜치에 작업해둔 커밋을 실수로 날려버리지 않기 위함.

git branch -D (강제로 삭제할 브랜치 이름)

터미널 창에서 브랜치 작업 내역을 시각적으로 보는 방법

git log --all --decorate --oneline --graph

Lesson10. 브랜치를 합치는 두 가지 방법

브랜치를 합치는 방법

머지

'병합'이라는 뜻
두가지를 이어붙이는것
브랜치를 병합하여 하나의 새로운 커밋을 만듦

리베이스

브랜치를 다른 브랜치로 옮겨 붙이는 것
현재 브랜치에서 다른 브랜치의 변경 사항을 가져와 커밋을 재정렬함

 

머지와 리베이스 차이

작업 내역이 다르게 처리됨

리베이스 방식을 사용하면 작업 내역이 깔끔하게 한줄로 정리
머지는 브랜치의 흔적을 남김
머지의 경우, 많은 브랜치가 사용되는 프로젝트에서는 프로젝틍의 진행 내역을 파악하기가 무척 복잡
브랜치의 사용 내역을 남겨둘 필요가 잇다면 머지
작업 내역을 깔끔하게 만드는게 중요하다면 리베이스

코드 충돌 여부

이미 팀원간에 공유된 커밋에 대해서는 리베이스를 사용하지 않는게 좋음

 

머지로 브랜치 병합하기
1.main브랜치로 이동

2.git merge명령어와 main브랜치에 합칠 대상 브랜치 이름을 입력
main브랜치에서 추가한것과 합칠 대상 브랜치에서 추가한 변경사항이 다같이 나타남

git merge add-coach

 

3.머지후 불필요해진 브랜치 삭제

git branch -d add-coach

 

4.git branch명령 입력 후 남은 브랜치 확인

git branch

병합한 브랜치 리셋하기

머지로 병합하기전 상태로 돌아가기

main브랜치 선택->우클릭->이 커밋까지 현재 브랜치를 초기화 선택->Hard-모든 작업 상태 내 변경 사항을 버림 선택후 확인->경고창 확인 클릭

리베이스로 브랜치 병합하기

1.합칠 대상 브랜치로 이동

git switch (합칠 대상 브랜치)

 

2.리베이스를 사용하려면 git rebase명령과 main(대상 브랜치)을 입력함

git rebase main

 

3.main브랜치에는 아직 변경사항이 적용되지 않았음

4.main으로 이동

git switch main

 

5.main브랜치를 rebase한 브랜치 위치로 옮기기 위해서는 머지가 필요함

git merge new-teams

리베이스할 대상 브랜치로 간 다음 해당 브랜치를 떼어 main 브랜치로 이어붙이고, 그 다음에 main브랜치의 위치를 맨끝으로 옮긴다고 기억하면 됨

Lesson11.브랜치간 충돌 해결하기

충돌 상황 만들기

한쪽 브랜치와 다른 쪽 브랜치에서 같은 파일의 같은 줄에 서로 다른 내용을 입력하고 병합하면 충돌이 발생함

vscode에서의 변경 사항 선택 옵션

-현재 변경 사항 수락:현재 브랜치의 내용으로 유지
-수신 변경 사항 수락: 상대 브랜치의 내용으로 변경
-두 변경 사항 모두 수락: 현재 브랜치의 내용과 상대 브랜치의 내용이 위 아래로 동시에 입력
-변경 사항 비교:양쪽 브랜치의 수정 사항들을 비교해주는 화면을 엶.

머지 중단하기

git merge --abort
->머지가 중단되고 main브랜치고 돌아감

Lesson12. 소스트리로 머지와 리베이스 실습하기

1.실습을 위해 to-merge브랜치와 to-rebase브랜치를 생성
2.소스트리를 실행하고 작업내역을 확인. 상단의 브랜치 도구 클릭
3.브랜치 대화상자에서 새브랜치에 to-merge,to-rebase를 각각 입력하고 브랜치생성버튼을 클릭
4.브랜치별로 각각 내용 수정후 소스트리로 커밋

소스 트리에서 머지와 리베이스 실습하기

1.main브랜치를 더블클릭해 이동
2.to-merge브랜치에서 마우스 우클릭후 현재 브랜치로 to-merge병합
3.리베이스할 대상 브랜치인 to-rebase브랜치 더블클릭후 main브랜치를 마우스 우클릭->현재 변경 사항을 main에 재배치 선택
4.리베이스만 하면 main브랜치가 이전단계로 뒤쳐져 있으므로 최신 브랜치를 더블 클릭하고 to-rebase브랜치를 마우스 우클릭->현재 브랜치로 to-rebase병합을 선택
5.필요없는 브랜치 삭제, 마우스 우클릭 (해당 브랜치)삭제

 

summary

1.브랜치 생성, 이동, 삭제하기

git branch (새브랜치 이름)->새 브랜치 생성

git switch (브랜치 이름)->브랜치로 이동

git branch -c (새 브랜치 이름)->브랜치 생성과 동시에 이동하기

git branch -d(또는 -D) (삭제할 브랜치 명)->브랜치 삭제

 

2.머지와 리베이스

git merge (브랜치명)->브랜치 병합

git rebase (브랜치명)->깃 리베이스(재배치)

git merge --abort ->머지 중단

git rebase --abort ->리베이스 중단

git rebase --continue ->충돌 해결후 리베이스