git/github(4)

clouood·2023년 12월 30일

git/github

목록 보기
4/9
post-thumbnail

[차원 넘나들기]

'branch'는 '가지'라는 뜻을 가지고 있음.
사진에서 파란색 라인이 main 차원. 이를 기준으로 새로운 차원으로 뻗어나가는 것.

Branch : 분기된 가지

  • 프로젝트를 하나 이상의 모습으로 관리해야 할 때
    • ex) 실배포용, 테스트 서버용, 새로운 시도용

  • 여러 작업들이 각각 독립되어 진행될 때
    • ex) 신기능 1, 신기능 2, 코드개선, 긴급수정...
    • 각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합

후자의 경우, 협업에서 많이 사용된다. 한 사람이 한 프로젝트를 온전히 맡아 하는 것이 아니므로 여러 작업으로 나누어 진행된다. 서로 다른 차원에서 완성된 기능은 main 브랜치에 통합한다.


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


[브랜치 생성]

'add-coach'라는 이름의 브랜치 생성
git branch add-coach

현재 브랜치는 'main'이라는 뜻.

[브랜치 이동]

add-coach 브랜치로 이동하려면?
git switch 브랜치 이름

원래 git에서 브랜치를 이동하려면 'checkout'이라는 명령어를 사용하였지만, checkout의 용도가 다양해서 git 2.23 버전부터 switch, restore로 분리되었다. 


'add-coach'라는 브랜치로 이동한 것임.

아직 'main'브랜치와 'add-coach'브랜치는 같은 라인에 있음. 아직 갈라지지 않은 상태. 둘 다 'Replace arsenal with manU' 버전에 위치해 있기 때문.

다시 main 브랜치로 돌아온 상태.


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

git switch -c 새 브랜치명

예전에는 'git checkout -b 새 브랜치명' 명령어를 사용했음.


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

git branch로 생성된 브랜치들 확인해보기

세 개의 브랜치 확인.

[브랜치 삭제]

git branch -d 삭제할 브랜치명

지울 브랜치에 다른 브랜치로 적용되지 않은 내용의 커밋이 있을 시에는 -D(대문자) 옵션으로 강제 삭제한다. 

일단 'to-delete'라는 이름의 브랜치를 만들기.
지우기 전에, 브랜치 이름 변경을 먼저 해보겠음.

[브랜치 이름 변경]

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

브랜치 이름이 변경된 것을 확인할 수 있음.

소스트리에서도 확인 가능.
근데 지금은 하나의 가지에 4개의 브랜치가 싹만 틔운 것임.
새로운 커밋을 추가해야 서로 다른 브랜치로 뻗어나감.

일단 이름 변경한 to-erase 브랜치를 삭제하고 main 브랜치로 돌아오기.


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

A. main 브랜치
1. liverpool.yaml의 members에서 '알리송 베커' 추가
커밋 메시지 : Add 알리송 베커 to liverpool


2. manU.yaml의 members에서 '라스무스 호일룬' 추가
커밋 메시지 : Add 라스무스 호일룬 to manU

new-teams와 add-coach 브랜치는 싹만 틔워진 상태. main 브랜치만 뻗어나가 있음.

이제 add-coach 브랜치로 이동한 후, 작업을 진행하겠음

B. add-coach 브랜치
1. tottenham.yaml의 매니저 정보 아래 coach : 라이언 메이슨 추가
커밋 메시지 : Add coach 라이언 메이슨 to tottenham


2. liverpool.yaml의 매니저 정보 아래 coach : 펩 레인더르스 추가
커밋 메시지 : Add coach 펩 레인더르스 to liverpool


3. manU.yaml의 매니저 정보 아래 coach : 스티브 맥클라렌 추가
커밋 메시지 : Add coach 스티브 맥클라렌 to manU

소스트리를 보면 무언가 달라져 있음. 가지가 갈라져 있음.
add-coach 브랜치에서는 각 파일의 coach들이 추가되어 있는 상황.
main 브랜치로 돌아가보자.


main 브랜치로 돌아온 상황.

그럼 좀 전에 추가했던 coach들이 싹 다 사라져 있음.

다시 add-coach 브랜치로 돌아가보면

main에서 추가했던 네 번째 선수가 사라져 있고, coach만 추가되어 있음.


new-teams 브랜치로 돌아가보면,

main 브랜치, add-coach 브랜치에서 한 작업들이 추가되지 않음.
그래서 new-teams 브랜치에서의 작업을 따로 해주겠음.

C. new-teams 브랜치
1. chelsea.yaml 추가
team : chelsea
manager : 마우리시오 포체티노
members :
- 코너 갤러거
- 모이세스 카이세도
- 미하일로 무드리크

커밋 메시지 : Add team chelsea


2. wolverhampton.yaml 추가
team : wolverhampton
manager : 게리 오닐
members :
- 황희찬
- 마테우스 쿠냐
- 페드루 네투

커밋 메시지 : Add team wolverhampton

main 브랜치에서 두 갈래,
add-coach 브랜치에서 세 갈래,
new-teams 브랜치에서 두 갈래 생성.

main 브랜치로 돌아가면, 앞서 만든 두 파일이 사라짐.


결과 살펴보기

git log는 위치한 브랜치에서의 내역만 확인 가능.

[여러 브랜치의 내역 편리하게 보기]

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

내역들이 뜬다! 분기된 가지들을 텍스트로 표현한 것.
근데 사실 소스트리로 보는 것이 더 편함.

profile
雲外蒼天

0개의 댓글