본문 바로가기

GIT

협업을 위한 Git 활용 2주차

728x90

협업을 위한 Git 활용 2주차


issue 할당

 

issue : 누가 이 작업을 할 것인지 정하기

branch : 각자 맡은 것을 작업하기

merge : 각자 작업을 프로젝트에 합치기

 

gitbub issue

  • Assigness(담당자) : 이슈를 작업하거나 관련된 사람, 작업할 사람
  • Labels : 이슈가 어떤건지 분류

 


issue와 연관된 commit 만들기

issue관련 commit

커밋 메세지에 #1(이슈번호) 붙여서 커밋!

이슈 관련 커밋

자동으로 이슈와 관련된 commit이 있었다는 걸 알려줌!


📌 Branch란?

각자 작업을 할 수 있는 공간을 만들기 위해 나뭇가지가 뻗어나오듯

branch를 이용하면 기능에 맞게 나누어 작업할 수 있음.

 

협업을 할때는 내 작업만 열심히 commit하는 것이 아니라 다른 부분을 신경써줘야 한다.

두 사람이 같은 파일을 작업하면 충돌이 나서 더 이상 작업하기 힘들 수 있다.

그러므로 서로 작업한 commit 내역을 내 로컬 repo에도 틈틈히 반영해 줘야 한다.

 

main브랜치

 ㄴ 김치국 브랜치

 ㄴ 김치찜 브랜치

 

branch history를 보면서 기능별 브랜치를 만들어 작업했음을 알 수 있다.

 


branch 실습

📌 브랜치 생성

 

브랜치 생성

브랜치명 : 기능/이슈번호_기능이름

 

브랜치 생성

◎ : 지금 이 브랜치(작업공간)에 있다는 뜻

 

📌 branch checkout

branch checkout


📌 branch 삭제하기

브랜치를 삭제한다는 것은 그동안 브랜치에 했던 작업 내역 즉, commit이 모두 사라진다는 의미

브랜치를 삭제하면 기본 브랜치인 main 브랜치로 체크아웃(작업 브랜치 변경) 됩니다.

 

삭제할 브랜치 생성

 

delete_test 브랜치 history
브랜치 삭제

다른 브랜치로 체크아웃 해둔 상태에서 삭제!

강제삭제!

브랜치 삭제전 파일과 동일

파일도 확인해 보면, 브랜치 commit한 내용은 모두 삭제!

main작업공간에서의 commit과 동일!

 

맘껏 실험해보고 싶을 때, 브랜치생성해서 삭제하는 과정 이용.

 


Merge(병합)

각자 작업한 것을 합치기 위해 사용

브랜치를 다른 브랜치에 합치는 것.

특정 브랜치의 commit 들을 다른 브랜치의 commit 내역에 모두 반영하는 것.

 

main브랜치

 ㄴ dev

     ㄴ 김치국 브랜치

     ㄴ 김치찜 브랜치

 

실제 프로젝트에서는 작업 내역을 모두 합칠 기준이 되는 브랜치(개발용 브랜치, 배포용 브랜치)를 정해두고 작업합니다.

실습에서는 main 브랜치에 합쳐 볼 예정!

 

📌 github-flow

프로젝트마다 branch 관리하는 방법이 다름.

commit하고 작업하는 방법을 통틀어 flow(흐름)이라고 함.

웹개발의 경우 github-flow를 많이 사용합니다.


merge실습

source tree merge

  • 합칠 기준이 되는 브랜치(main)으로 체크악웃
  • [병합] 클릭!

병합 옵션

  • 병합할 브랜치(feature/2_jjigae)선택
  • 옵션 체크!

merge 완료, commit된 상태

commit까지 완료된 상태

 

이제 쓰일 일 없는 feature/2_jjigae 브랜치는 삭제해주면 된다.


 

📌 여러 브랜치를 만들어 작업하고 merge하는 실습

 

jeon, rice branch 생성

main에서 뻗어나가는 feature/jeon, feature/rice 브랜치 2개 생성

 

rice브랜치 체크아웃- 탐색기

rice브랜치에 체크아웃 해둔 상태에서 [탐색기] 클릭

rice관련 문서 수정!

 

브랜치 두개 커밋

브랜치 두개 수정 사항 서로 영향 받고 있지 않음.

 

여러 브랜치 병합

main에 체크아웃해둔 상태에서 차례로 merge

병합 완료!


Merge Conflict

merge할 때 발생하는 충돌!

<<<<<<< HEAD
{현재 브랜치의 다른 파일 내용}
=======
{충돌나는 브랜치명 또는 commit에서의 다른 파일 내용}
>>>>>>> 충돌나는 브랜치명 또는 commmit 아이디

충돌 나는 부분을 위와 같이 알려주면 이를 수정.

<<<<<<< HEAD , ======= , >>>>>>> 충돌나는 브랜치명 또는 commmit 아이디 를 지우면 됨.

 

수정한 뒤, commit해주면 됨.


📌 Merge Conflict 실습

같은 파일 수정으로 인한 conflict 발생 예정!

 

충돌 메세지

충돌 발생!!!

충돌된 파일을 선택 후, '충돌 해결' 밑의 메뉴 사용하여 해결가능

source tree 충돌파일

[해당 파일] 더블 클릭

사람이 보고 결정! 수동의 수정작업을 해야함.

merge conflict 해결후, 병합

병합충돌 해결후, 병합!


원격 repo

merge push
branch push

feature/jjim 브랜치에서 수정한 파일을 origin/feature/jjim저장소에다 push

원격 저장소 업로드 확인

 

'GIT' 카테고리의 다른 글

협업을 위한 Git 활용 3주차(2)  (0) 2022.12.02
협업을 위한 Git 활용 3주차  (1) 2022.12.01
협업을 위한 Git 활용 1주차  (0) 2022.11.28