1. Push (푸시)
- 설명 : 로컬 저장소에서 작업한 내용을 원격 저장소(GitLab 등)로 업로드하는 작업
- Ex) 로컬에서 코드를 수정하거나 새로운 기능을 추가한 후, 이를 공유하기 위해 원격 저장소로 전송
2. Pull (풀)
- 설명 : 원격 저장소(GitLab)에서 최신 코드를 로컬 저장소로 가져오는 작업
- Ex) 팀원들이 작업한 최신 코드를 가져와 로컬 저장소를 업데이트할 때 사용
3. Merge (머지)
- 설명 : 한 브랜치의 변경 사항을 다른 브랜치에 병합하는 작업
- Ex) 보통 개발 브랜치(feature)를 메인 브랜치(main 또는 master)에 합칠 때 사용
4. Merge Request (MR, 머지 요청)
- 설명 : GitLab에서 특정 브랜치의 변경 사항을 다른 브랜치로 병합해달라고 요청하는 절차
- EX )
- 팀에서 코드 리뷰를 받기 위해 사용
- 병합 전 충돌(conflict)이 있는지 확인
- 작업 순서)
- 브랜치 생성 후 작업 완료.
- 해당 브랜치에서 MR을 생성.
- 리뷰 후 병합 승인 및 완료.
5. Branch (브랜치)
- 설명 : 코드의 독립적인 작업 공간
- Ex) 새로운 기능(feature)을 개발하거나 버그를 수정할 때, 메인 브랜치와는 별도로 작업 하는 용도
- 주요 브랜치)
- main 또는 master : 기본이 되는 브랜치, 최종 배포용.
- Develop : 개발 브랜치, 새 기능 개발 전 테스트용.
- Feature : 특정 기능 개발용 브랜치.
- Hotfix : 긴급 버그 수정용 브랜치.
6. Commit (커밋)
- 설명 : 파일 변경 사항을 기록하여 저장소의 히스토리에 추가하는 작업
- EX) 코드를 수정한 후 해당 변경에 대한 설명(커밋 메시지)과 함께 저장합니다.
7. Clone (클론)
- 설명 : 원격 저장소의 코드를 복사하여 로컬 저장소로 가져오는 작업
- EX) 처음 이클립스에 프로젝트를 다운로드하여 작업 환경을 잡을 때 사용
8. Fork (포크)
- 설명: 다른 사람의 프로젝트를 내 계정으로 복사하여 독립적으로 작업할 수 있게 만드는 기능
- EX) 오픈소스 프로젝트에 기여하거나, 외부 저장소를 수정할 때 사용
9. Conflict (충돌)
- 설명: 두 브랜치에서 동일한 파일의 동일 부분이 수정되어 병합 시 충돌이 발생하는 상황
- 해결 방법
- 충돌 파일 수정.
- 변경 사항 커밋.
- 병합 재시도.
요약 워크플로
- Clone : 원격 저장소를 로컬에 복사.
- Branch 생성 : 독립적인 작업 공간 생성.
- Commit : 로컬 변경 사항 저장.
- Push : 로컬 변경 사항을 원격 저장소에 업로드.
- Merge Request : 브랜치 변경 사항 병합 요청.
- Merge : 코드 리뷰 후 병합.
일반적으로 새로운 기능을 개발할 때는 develop브랜치에서 작업하고, 작업이 완료되면 main 브랜치로 병합(Merge)합니다.
작업 순서 요약
feature 브랜치 생성
feature 브랜치에서 작업 (코드를 수정하고, 변경 사항을 커밋)
feature 브랜치를 원격 저장소에 Push(팀원들이 리뷰할 수 있도록 작업 한 feature 브랜치를원격 저장소에 올림(Push))
문제 없다면 MR 진행
Merge Request (MR)
- GitLab에서 feature 브랜치를 main 브랜치로 병합하기 위한 Merge Request를 생성(feature 브랜치의 병합 대상을 main 브랜치로 선택)
- (코드 리뷰, 자동화 테스트(CI/CD) 등 진행)
Merge
- 리뷰 및 테스트가 끝난 면 Merge하여 main 브랜치로 병합 실행.
- 충돌이 발생하면 이를 해결한 뒤 다시 병합 실행
- 정상적으로 병합이 되었다면 feature 브랜치 필요시 삭제 진행, main 브랜치를 로컬로 가져와서 업데이트 확인.
주의사항
주의 : 소스 개발하기 전, 그리고 push를 통해 깃랩 원격 저장소로 업로드(배포) 하기전에는 충돌 방지를 위해, 항상 먼저 Fetch, Pull 을 해줌으로써 프로젝트를 최신상태로 만든 다음 작업을 해주자.