Git에게 특정 파일이나 디렉토리를 추적하지 않도록 지시하는 역할을 하는 특수한 파일 해당 프로젝트와는 관계없는 파일들이 원격저장소에 올라가지 않도록 하기 위해 사용 민감한 정보를 포함하는 파일, 시스템이나 개발 도구에 의해 생성된 파일, 빌드 결과물 등을 Git의 추적 대상에서 제외할 수 있다.
.gitignore 파일의 각 줄은 무시할 패턴을 지정하며, 아래와 같은 규칙을 따릅니다:
빈 줄이나 #로 시작하는 줄은 무시됩니다.
표준 Glob 패턴을 사용합니다.
슬래시(/)로 시작하면 하위 디렉토리에 적용되지 않습니다.
디렉토리는 슬래시(/)를 끝에 사용하여 지정할 수 있습니다.
느낌표(!)로 시작하는 패턴의 파일은 무시되지 않습니다.
사용 예시:
스프링 부트 프로젝트에서 유출되면 안되는 중요한 정보가 담긴 파일이 GIt에 올라가지 않도록 설정
## 개요
작업하게 된 이유를 작성해주세요.
## 작업 내용
작업한 내용을 상세하게 설명해주세요.
### 추가된 사항
새로 추가한 작업에 대해 설명해주세요.
### 변경 사항
기존 내용에서 변경된 사항을 before -> after 형식으로 작성해주세요.
## 이슈
궁금한 사항 혹은 리뷰어들이 알아야 하는 이슈를 작성해주세요.
## 이미지
시각적인 설명이 필요한 경우 부가적으로 첨부해주세요.
기존의 Git Flow나 GitHub Flow의 방식을 확장하여, 복잡한 프로젝트와 배포 환경에서도 안정적인 작업을 가능하게 하는 것이 특징이다.
GitHub Flow전략과 마찬가지로 Master 브랜치가 항상 배포 가능한 상태를 유지하며
Git Flow전략과 마찬가지로 다양한 종류의 브랜치를 활용하여 작업을 분류 할 수 있다.
(간단한 경우) 브랜치 종류
master : 항상 배포 가능한 상태를 유지하는 최종 브랜치 feature : 새로운 기능이나 버그 수정을 위한 브랜치 master 브랜치로부터 분기하며 master 브랜치로 병합된다.
방법
master 브랜치에서 작업을 시작하기 위한 feature 브랜치로 분기합니다.
feature 브랜치에서 작업을 시작하고 작은 단위로 쪼개 커밋합니다.
작업이 완료된 코드는 리뷰 및 테스트를 하고 master 브랜치에 병합시킵니다.
(복잡한 경우) 브랜치 종류
master : 항상 배포 가능한 상태를 유지하는 최종 브랜치로 모든 배포 환경에 대한 공통 코드가 존재한다. feature : 새로운 기능이나 버그 수정을 위한 브랜치 master 브랜치로부터 분기하며 master 브랜치로 병합된다. environment : 특정 환경에 대응하는 브랜치 환경에 따라 여러개의 종류가 있을 수 있다. - development : environment 브랜치 중 하나로 개발자들이 새로운 기능을 개발하고 초기 테스트를 진행하는 환경의 브랜치 - staging :environment 브랜치 중 하나로 실제 서비스 배포 전 마지막 테스트와 검증을 수행하는 환경의 브랜치 - production : environment 브랜치 중 하나로 실제로 사용자에게 서비스되는 프로덕션 환경의 코드를 담당하는 최종 브랜치
방법
master 브랜치에서 새로운 기능이나 수정이 필요한 부분에 대해 feature 브랜치를 생성하여 분기합니다.
feature 브랜치에서 작업을 시작하고 작은 단위로 쪼개 커밋합니다.
작업이 완료된 코드는 PR 리뷰 및 테스트를 하고 master 브랜치에 병합합니다.
master 브랜치에 병합된 변경 사항을 development 브랜치, 환경에 반영합니다.
development 브랜치,환경에서 테스트가 성공적으로 수행되면 staging 브랜치,환경에 반영합니다.
실제 서비스 배포 전 마지막 테스트와 검증을 수행하고 완료되면 최종적으로 production 브랜치,환경으로 병합합니다.
(특별한 경우) 브랜치 종류
master : 항상 배포 가능한 상태를 유지하는 최종 브랜치 모든 배포 환경에 대한 공통 코드가 존재한다. feature : 새로운 기능이나 버그 수정을 위한 브랜치 master 브랜치로부터 분기하며 master 브랜치로 병합된다. environment : 특정 환경에 대응하는 브랜치 - development : environment 브랜치 중 하나로 개발자들이 새로운 기능을 개발하고 초기 테스트를 진행하는 환경의 브랜치 - staging : environment 브랜치 중 하나로 실제 서비스 배포 전 마지막 테스트와 검증을 수행하는 환경의 브랜치 - production : environment 브랜치 중 하나로 실제로 사용자에게 서비스되는 프로덕션 환경의 코드를 담당하는 최종 브랜치 release : 특정 버전의 배포를 위한 브랜치, 특정 버전의 준비가 완료된 후 해당 브랜치를 프로덕션 브랜치로 병합하여 배포하게 된다. hotfix : 프로덕션에서 발생한 긴급한 이슈를 해결하기 위한 브랜치 production 브랜치로부터 분기하며 수정 후에는 production과 master 브랜치 모두에 병합된다.
방법
master 브랜치에서 작업을 시작하기 위한 feature 브랜치로 분기합니다.
feature 브랜치에서 작업을 시작하고 작은 단위로 쪼개 커밋합니다.
작업이 완료된 코드는 PR 리뷰 후 mater 브랜치에 병합합니다.
master 브랜치에서 release 브랜치로 분기 후 테스트와 검증을 수행합니다.
release 브랜치에 병합된 변경 사항에 테스트가 성공적으로 수행되면 master, development 브랜치, 환경에 반영합니다.
development 브랜치,환경에서 테스트가 성공적으로 수행되면 staging 브랜치,환경에 반영합니다.
실제 서비스 배포 전 마지막 테스트와 검증을 수행하고 완료되면 최종적으로 production 브랜치,환경으로 병합합니다.
production 환경에서 발생한 긴급한 이슈는 hotfix 브랜치에서 긴급 수정하고 production 및 master 브랜치로 병합합니다.
장점
다양한 브랜치를 전략을 사용하여 작업을 분류하기 때문에 복잡한 프로젝트에 적합하다.
다양한 브랜치 전략으로 조합하여 사용할 수 있어 유연성이 높다.
지속적인 배포와 통합 master 브랜치에서 일어나는 모든 변경 사항은 즉시 테스트와 통합이 가능해지므로, 지속적인 통합(CI)와 배포(CD)를 가능하게 한다.
master : 최종 브랜치로 제품을 배포하는 브랜치 develop : 다음 출시 버전을 개발하는 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 PR, Merge 한다 feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 PR, Merge 한다 release : 배포를 위해 master 브랜치로 보내기 전에 먼저 테스트와 스테이징을 하기위한 브랜치 hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 떄 긴급 수정하는 브랜치
방법
rebase 작업 대신 merge 작업으로 작업 도중 업데이트된 develop 브랜치를 반영한 경우rebase 작업을 수행한 경우
master 브랜치에서 develop 브랜치를 분기합니다.
개발자들은 develop 브랜치를 기준으로 브랜치를 분기합니다.
각 구현해야 할 기능 마다 develop 브랜치에서 feature-* 브랜치로 분기합니다.
작업 변경 사항을 최소단위로 feature-* 브랜치로 commit 합니다.
기능을 개발하던 도중 다른 개발자의 PR혹은 커밋으로 develop 브랜치가 변화 했다면 rebase 하여 현재 브랜치의 커밋을 임시적으로 제거하고, rebase 대상 브랜치의 모든 커밋을 먼저 적용한 다음, 이전에 제거했던 커밋을 다시 적용해 작업합니다. (merge 와의 차이점은 선형적인 커밋 이력을 유지할 수 있다는 점 입니다.)