20일 차 TIL
Github로 협업 시 Issue 발행부터 커밋, PR 생성까지의 흐름을 소개하고
코드 컨벤션의 개념을 이해하고 IntelliJ에서 적용하는 법을 다뤘다.
Github 협업 Rules
1. Git Flow 전략을 사용한다.

2. 이슈 템플릿으로 Issue 발행하기
- Github에 .github 폴더 생성
- ISSUE_TEMPLATE 폴더 생성
- 이슈 템플릿 생성 및 ISSUE_TEMPLATE에 추가
- 이슈 생성 시 템플릿 선택
- chore.md 예시
---
name : "Chore Template"
about : 프로젝트 관리 작업 이슈 템플릿
title : "[CHORE] "
---
## Description
-
## TODO
- [ ]
- [ ]
title에 적힌 내용으로 이슈 제목이 기본 설정으로 된다.
- 이슈제목의 형식은 다음과 같다.
[type] subject
- 발행된 이슈 예시

이외에도 feature.md, hotfix.md 등 여러 Issue Template을 만들 수 있다.
3. 브랜치 네이밍
이슈를 발행하고 해당 이슈화면에서 바로 브랜치를 생성할 수 있다.
- 우측 Development Create a branch 버튼 클릭

- 이슈화면에서 브랜치 생성하기

- 브랜치명의 형식은 다음과 같다.
{타입}/{이슈번호}-{간략한 설명}
만약 feature.md 템플릿을 사용했고 이슈번호가 9이고 로그인 기능을 구현한다면?
feature/9-add-login처럼 지을 수 있다.
4. 커밋 메시지 규칙
브랜치를 로컬로 가져와서 코드를 수정한 후에 커밋을 해야 한다.
- 이때 커밋 메시지의 형식은 다음과 같다.
[type]: subject
만약 Issue 제목이 feature/9-add-login이라면?
feature: 로그인 기능 추가처럼 지을 수 있다.
5. Issue와 PR 간 규칙
코드를 커밋 후 브랜치에 푸시를 하고, Pull Request를 생성할 때
- PR의 제목은 이슈 제목 그대로 사용하거나 아래 형식을 따른다.
[type] 이슈 제목
코드컨벤션
코드컨벤션이란 개발자들이 일관된 방식으로 코드를 작성하기 위해 정한 규칙과 약속을 말합니다.
예로 네이밍 규칙, 들여 쓰기 규칙, 줄 길이 제한, 괄호 및 공백 스타일 등이 있다.
인텔리제이를 사용하는 경우 설정 > 코드 스타일에서 다운로드한 xml로 코드 컨벤션 설정을 할 수 있다.
- 코드컨벤션 IntelliJ에 적용하기

- 코드를 저장할 때마다 자동으로 포메터 적용시키기

하지만 팀원이 모두 인텔리제이를 사용한다면 문제없지만
다른 에디터를 사용하는 경우 위 설정을 사용할 수 없다.
이때 사용하는것이 .editorconfig 파일이다.
- 프로젝트 루트에 .editorconfig 파일 생성
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
[*.java]
max_line_length = 120
다른 에디터를 사용하더라도
프로젝트 루트에 .editorconfig 파일을 생성하고
모든 팀원이 동일하게 설정한다면 된다.
여기까지가 에디터 단위의 설정이다. 하지만 깃에도 적용하고 싶다면 .gitattributes 파일을 사용해야 한다.
- 프로젝트 루트에 .gitattributes 파일 수정
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
text=auto eol=lf
기본으로 생성되는 .gitattributes 파일에
text=auto eol=lf 추가해서 CRLF/LF 충돌을 해결한다.
이제 CI/CD 환경에서 빌드 시 자동 포맷을 위한 spotless설정을 진행한다.
- 추가한 xml에 맞게 gradle을 spotless 관련 설정을 추가한다.
plugins {
id 'java'
id 'com.diffplug.spotless' version '6.25.0'
}
spotless {
java {
eclipse().configFile('config/woowacourse-java-style.xml')
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
}
}
./gradlew spotlessApply
./gradlew spotlessCheck
CI에서 위 spotlessCheck를 돌려 포맷에 안 맞으면 PR 실패 처리할 수 있다.
'내배캠' 카테고리의 다른 글
| [내일배움캠프] 22일 차 TIL Liquibase (0) | 2026.03.03 |
|---|---|
| [내일배움캠프] 21일 차 TIL QueryDSL 적용 방법 (0) | 2026.03.02 |
| [내일배움캠프] 19일 차 TIL 도메인 중심 아키텍처 (0) | 2026.03.01 |
| [내일배움캠프] 18일 차 TIL 동시성문제 해결방법들 (0) | 2026.02.27 |
| [내일배움캠프 본캠프] 17일 차 TIL ERD 설계 시 트레이드-오프 고려 (0) | 2026.02.26 |
