[내일배움캠프] 20일 차 TIL Github Rules, Code Convention

2026. 3. 1. 12:41·내배캠

20일 차 TIL

Github로 협업 시 Issue 발행부터 커밋, PR 생성까지의 흐름을 소개하고
코드 컨벤션의 개념을 이해하고 IntelliJ에서 적용하는 법을 다뤘다.

Github 협업 Rules

1. Git Flow 전략을 사용한다.

2. 이슈 템플릿으로 Issue 발행하기

  1. Github에 .github 폴더 생성
  2. ISSUE_TEMPLATE 폴더 생성
  3. 이슈 템플릿 생성 및 ISSUE_TEMPLATE에 추가
  4. 이슈 생성 시 템플릿 선택

- chore.md 예시

---
name : "Chore Template"
about : 프로젝트 관리 작업 이슈 템플릿
title : "[CHORE] "

---

## Description
- 

## TODO
- [ ]
- [ ]

title에 적힌 내용으로 이슈 제목이 기본 설정으로 된다.
- 이슈제목의 형식은 다음과 같다.

[type] subject

 

- 발행된 이슈 예시

feature.md 템플릿을 사용해 만든 Issue

이외에도 feature.md, hotfix.md 등 여러 Issue Template을 만들 수 있다.


3. 브랜치 네이밍

이슈를 발행하고 해당 이슈화면에서 바로 브랜치를 생성할 수 있다.

- 우측 Development Create a branch 버튼 클릭

이슈페이지 우측 하단 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에 적용하기

Wootecourse의 코드컨벤션 적용

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

코드컨벤션 포멧팅 자동 적용

하지만 팀원이 모두 인텔리제이를 사용한다면 문제없지만
다른 에디터를 사용하는 경우 위 설정을 사용할 수 없다.
이때 사용하는것이 .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

 

- 포맷 검사 (CI용)
./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
'내배캠' 카테고리의 다른 글
  • [내일배움캠프] 22일 차 TIL Liquibase
  • [내일배움캠프] 21일 차 TIL QueryDSL 적용 방법
  • [내일배움캠프] 19일 차 TIL 도메인 중심 아키텍처
  • [내일배움캠프] 18일 차 TIL 동시성문제 해결방법들
MvA
MvA
백엔드 개발자 김재현입니다. 주로 공부하면서 느낀점을 기록합니다.
  • MvA
    Man vs Ai
    MvA
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Java (6)
      • Python (8)
        • 딥러닝 (1)
        • 머신러닝 (7)
      • JavaScript (2)
      • 내배캠 (60)
      • 개인 프로젝트 (11)
      • 책 후기 (5)
      • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    아키텍처
    내일배움캠프
    배포
    TiL
    Riot API
    딥러닝
    머신러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
MvA
[내일배움캠프] 20일 차 TIL Github Rules, Code Convention
상단으로

티스토리툴바