
깃 브랜치를 운영하는 방법론
- gitflow : master, develop, feature, release, hotfix 브랜치를 설정하고 운영하는 방식 ( 규모가 크면 )
- github flow : main(master), feature 브랜치만으로 운영하는 방식 ( 소규모 )

- Master 브랜치:
- 제품 배포가 완료된 안정된 코드가 위치하는 브랜치입니다.
- 이 브랜치의 각 커밋은 하나의 배포 가능한 버전을 의미합니다.
- Develop 브랜치:
- 개발 중인 코드가 모이는 브랜치입니다.
- 새로운 기능 개발이 완료되면 이 브랜치로 병합됩니다.
- 다음 배포 버전을 준비하는 브랜치입니다.
- Feature 브랜치:
- 새로운 기능이나 개선사항을 개발하는 브랜치입니다.
- Develop 브랜치에서 분기되며, 개발이 완료되면 Develop 브랜치로 병합됩니다.
- 브랜치 이름은 보통 feature/기능-이름 형식을 사용합니다.
- Release 브랜치:
- 배포 준비를 위한 브랜치입니다.
- Develop 브랜치에서 분기되며, 최종 배포 전의 버그 수정과 QA가 이뤄집니다.
- 배포가 완료되면 Master 브랜치와 Develop 브랜치로 병합됩니다.
- 브랜치 이름은 보통 release/버전-번호 형식을 사용합니다.
- Hotfix 브랜치:
- 배포된 제품에서 발생한 긴급한 버그를 수정하는 브랜치입니다.
- Master 브랜치에서 분기되며, 수정이 완료되면 Master 브랜치와 Develop 브랜치로 병합됩니다.
- 브랜치 이름은 보통 hotfix/버전-번호 형식을 사용합니다.
Feature 생성 Tip)
1 ) issue 생성하기

2) 브랜치 생성하기
git branch feature/도메인 설계하기 #1
git checkout feature/도메인 설계하기 #1
-> 기능과 issue 관리하기가 쉽다.😃
Commit 생성 Tip)
- GitHub의 자동 링크 (Auto-Link) 브랜치, 커밋, 이슈 등을 서로 연결하여 추적성과 연관성을 쉽게 파악할 수 있도록 돕는 기능입니다. 이는 프로젝트 관리와 협업을 효율적으로 만드는 중요한 기능 중 하나입니다. 자동 링크는 주로 이슈 번호, 풀 리퀘스트(PR) 번호, 커밋 해시 등을 사용하여 자동으로 관련 항목에 링크를 생성합니다.
1 ) Commit 하기
git commit -m "[docs] 도메인 설계 하기 #1"
다음은 일반적으로 사용되는 커밋 메시지 태그입니다:
- feat: 새로운 기능 추가
- fix: 버그 수정
- docs: 문서 수정
- style: 코드 포맷팅, 세미콜론 누락 등 코드 변경이 없는 경우
- refactor: 코드 리팩토링 (기능 변화 없음)
- test: 테스트 추가 또는 수정
- chore: 빌드 작업이나 패키지 관리자 설정 등 수정
Commit 메세지 Tip)
- 무엇과 어떻게는 중요하기는 하지만 add 하게 되면 무엇을, 변경사항은 어떻게 알 수 있다. 친절한 문서는 좋으나 장황하지는 말자!
- 가장 중요한 문서는 왜를 적는 거다.
깃 브랜치 전략을 세우는 이유와 요령
- 하나의 프로젝트 소스코드를 여러 개발자가 다루면서 발생하는 각종 부작용을 해결하자
- 개발 협업을 원활하게 하기 위한 약속
- 전략을 세울 때 고려할 수 있는 요소들
1) 이 브랜치는 제품으로 내보낼 수 있는가?
2) 이 브랜치는 빌드 실패를 허용하는가?
3) 이 브랜치는 테스트 실패를 허용하는가?
4) 이 브랜치는 임시로 운영하는가? 유지하지 않고 수시로 삭제하는가?
Git 명령어
1 ) git add
- git add 명령은 변경된 파일을 스테이징 영역에 추가합니다. 이는 커밋할 변경 사항을 준비하는 단계입니다.
git add <file> # 특정 파일 추가
git add . # 현재 디렉토리의 모든 변경 사항 추가
git add * # 현재 디렉토리의 모든 파일 추가
2) git commit -m
- git commit -m 명령은 스테이징된 변경 사항을 로컬 저장소에 커밋합니다. -m 옵션을 사용하여 커밋 메시지를 지정할 수 있습니다.
git commit -m "커밋 메시지" # 스테이징된 변경 사항을 커밋하고 메시지 추가
3) git push origin main
- git push 명령은 로컬 저장소의 커밋을 원격 저장소로 푸시합니다. origin은 원격 저장소의 이름이며, main은 브랜치의 이름입니다.
git push origin main # 로컬 main 브랜치의 커밋을 원격 main 브랜치로 푸시
4) git status
- git status 명령은 현재 작업 디렉토리의 상태를 확인합니다. 변경된 파일, 스테이징된 파일, 트랙되지 않은 파일 등을 보여줍니다.
git status # 현재 작업 디렉토리의 상태를 확인
5) git log
- git log 명령은 커밋 히스토리를 보여줍니다.
git log # 커밋 히스토리 출력
6) git branch
- git branch 명령은 로컬 브랜치 목록을 보여줍니다. -r 옵션을 사용하면 원격 브랜치 목록을 볼 수 있습니다.
git branch # 로컬 브랜치 목록 출력
git branch -r # 원격 브랜치 목록 출력
7) git checkout
- git checkout 명령은 브랜치를 전환하거나 특정 커밋으로 작업 디렉토리를 업데이트합니다.
git checkout <branch> # 특정 브랜치로 전환
git checkout -b <new-branch> # 새로운 브랜치를 생성하고 전환
8) git fetch
- git fetch 명령은 원격 저장소의 최신 변경 사항을 가져오지만, 로컬 브랜치에 병합하지는 않습니다.
git fetch # 원격 저장소의 최신 변경 사항을 가져옴
9) git pull
- git pull 명령은 원격 저장소의 변경 사항을 가져와서 현재 브랜치에 병합합니다. git fetch와 git merge를 결합한 명령입니다.
git pull origin main # 원격 main 브랜치의 변경 사항을 가져와 현재 브랜치에 병합
10) git reset
- git reset 명령은 커밋을 되돌리거나 스테이징 영역의 변경 사항을 취소합니다.
git reset HEAD~1 # 가장 최근의 커밋을 취소 (로컬 저장소와 스테이징 영역에서)
git reset --soft HEAD~1 # 가장 최근의 커밋을 취소하지만, 변경 사항을 스테이징 상태로 유지
git reset --hard HEAD~1 # 가장 최근의 커밋을 취소하고, 모든 변경 사항을 삭제
11) git revert
- git revert 명령은 지정된 커밋을 되돌리는 새로운 커밋을 만듭니다. 이는 안전한 되돌리기 방법으로, 커밋 히스토리를 유지합니다.
git revert <commit-hash> # 지정된 커밋을 되돌리는 새로운 커밋 생성
중요) 로컬과 원격 저장소
- 개발 입문자들이 이 부분에 대해서 많이 몰라 도르마무처럼 결국 다시 만들게 되는거 같다. 꼭 읽어봐요!!!
Git은 로컬 저장소와 원격 저장소가 따로 존재합니다. 각 저장소는 독립적으로 관리되며, 로컬 저장소에서 작업한 내용이 원격 저장소에 자동으로 반영되지 않습니다. 따라서 로컬과 원격 저장소를 동기화할 때 주의해야 할 몇 가지 중요한 사항이 있습니다.
로컬 저장소와 원격 저장소의 차이
- 로컬 저장소:
- 개발자가 자신의 컴퓨터에서 작업하는 저장소입니다.
- 로컬 저장소에는 전체 프로젝트 히스토리와 현재 작업 디렉토리가 포함됩니다.
- 커밋, 브랜치 생성, 체크아웃 등의 작업을 로컬에서 수행합니다.
- 원격 저장소:
- 프로젝트 팀이 공유하는 중앙 저장소입니다.
- GitHub, GitLab, Bitbucket 등과 같은 서비스에서 호스팅됩니다.
- 팀원 간에 변경 사항을 공유하고 협업하기 위해 사용됩니다.
로컬과 원격 저장소 동기화
로컬과 원격 저장소를 동기화하는 주요 명령어는 다음과 같습니다:
1. git fetch
- 원격 저장소에서 최신 변경 사항을 가져오지만, 로컬 브랜치에는 병합하지 않습니다.
- 원격 브랜치의 최신 상태를 로컬 저장소에 업데이트합니다.
git fetch
2. git pull
- 원격 저장소에서 최신 변경 사항을 가져오고, 현재 체크아웃된 브랜치에 병합합니다.
- git fetch와 git merge를 결합한 명령입니다.
git pull origin <branch-name>
3. git push
- 로컬 저장소의 변경 사항을 원격 저장소로 푸시합니다.
- 원격 저장소에 없는 새로운 커밋이나 브랜치를 원격 저장소에 반영합니다.
git push origin <branch-name>
- 동기화하기 전에 변경 사항 커밋:
- 로컬에서 작업한 변경 사항은 반드시 커밋해야 합니다. 그렇지 않으면, git pull 명령을 사용할 때 충돌이 발생할 수 있습니다.
- 커밋되지 않은 변경 사항이 있을 경우, git stash를 사용하여 임시로 저장할 수 있습니다.
- 충돌 해결:
- 원격 저장소와 로컬 저장소에서 동일한 파일을 수정했을 때 충돌이 발생할 수 있습니다. 충돌이 발생하면 수동으로 해결하고 커밋해야 합니다.
- 충돌 해결 후, 변경 사항을 다시 원격 저장소로 푸시해야 합니다.
- 브랜치 관리:
- 원격 저장소와 로컬 저장소에서 브랜치를 관리할 때, 일관된 네이밍 규칙과 브랜치 전략을 사용하는 것이 좋습니다.
- 불필요한 브랜치는 정리하여 관리의 복잡성을 줄입니다.
- 업스트림 브랜치 설정:
- 새로운 브랜치를 원격 저장소에 처음 푸시할 때는 -u 옵션을 사용하여 추적 정보를 설정합니다. 이후에는 git push 명령만으로도 푸시할 수 있습니다.
git push -u origin <new-branch-name>
'스터디 > Victor' 카테고리의 다른 글
| [ draw.io ] 유스케이스 작성법 (0) | 2024.05.26 |
|---|---|
| [Git ] 깃헙 프로젝트와 이슈 정리하기 (0) | 2024.05.26 |
| [Spring Boot] 인텔리제이 설정 및 플러그인 (0) | 2024.05.26 |
| [Spring Boot] Springdoc-OpenApi ( Swagger ) (0) | 2024.05.26 |
| [Spring Boot] 스프링 부트 Response Entity (1) | 2024.05.26 |