[Control Tower] Git 충돌 해결부터 사이드바 권한 분리까지

2026. 1. 21. 12:37·Projects/Team Projects

오늘은 팀 프로젝트를 진행하며 **형상 관리자(Configuration Manager)**로서 겪었던 Git 이슈들과, 프론트/백엔드 초기 세팅 과정에서 해결한 문제들을 정리해 본다.

1. 🛠️ Git 형상 관리: .gitignore가 중요한 이유

프로젝트 초반, 팀원들의 개발 환경(IDE, OS) 차이와 민감한 정보 파일 때문에 Git 충돌이 빈번하게 발생했다. 특히 Gradle 빌드 파일들이 계속 충돌을 일으켜 배포 흐름이 끊기는 문제가 있었다.

🚨 문제 상황 (Trouble)

  1. 보안 이슈: DB 비밀번호 등이 담긴 application_secret.yaml 파일이 실수로 원격 저장소(Remote Repo)에 올라갈 뻔함.
  2. 빌드 충돌: 팀원마다 로컬 경로가 다른데 .gradle/ 캐시 파일이나 build/ 폴더까지 커밋되어, Pull 받을 때마다 충돌(Conflict) 발생.
  3. Push 거부: non-fast-forward 에러가 계속 뜸.

✅ 해결 과정 (Shooting)

가장 먼저 .gitignore 파일을 재정비했다. Gradle 관련 캐시 파일과 빌드 결과물은 절대 공유되면 안 되기 때문에 아래 내용을 명시적으로 추가했다.

Bash
# .gitignore 설정 추가

# Gradle 캐시 및 빌드 파일 무시
.gradle/
**/.gradle/
build/

# 보안 파일 무시 (Local only)
application_secret.yaml

💡 이미 올라간 파일 처리하기 이미 원격 저장소에 잘못 올라간 파일들은 .gitignore에 추가해도 계속 추적되는 문제가 있었다. 이를 해결하기 위해 캐시 삭제 명령어를 사용했다.

Bash
# 원격 저장소에서는 지우되, 로컬 파일은 유지하기
git rm --cached -r .gradle/
git rm --cached application_secret.yaml
git commit -m "Fix: 보안 파일 및 빌드 캐시 트래킹 제거"

이후 팀원들에게 "Pull -> Conflict 해결 -> Push" 워크플로우를 전파하여 non-fast-forward 문제를 예방했다.


2. 🎨 Frontend: 사용자 권한(Role)별 사이드바 분리

우리 서비스는 항공사 직원, 관리자, 슈퍼 관리자 등 **권한(Role)**에 따라 접근 가능한 메뉴가 엄격히 나뉘어야 한다.

  • 구현: 기존에 하나로 뭉쳐있던 사이드바(Sidebar) 컴포넌트를 리팩토링했다. 로그인 시 받아온 User Role 정보를 확인해 조건부 렌더링(Conditional Rendering)을 적용했다.
  • 트러블 슈팅: 로그인 버튼을 누르면 자꾸 페이지가 새로고침 되어 Redux/Context 상태가 날아가는 현상이 있었다. <form> 태그의 기본 동작 때문이었는데, e.preventDefault()를 추가하여 비동기 로그인 로직이 정상적으로 수행되도록 수정했다.

3. ⚙️ Backend: Spring Boot 시크릿 관리

백엔드 초기 세팅 중 가장 신경 쓴 부분은 보안이다.

  • YAML 분리: DB 접속 정보(URL, Username, Password)는 노출되면 안 되므로 application.yaml(공통 설정)과 application_secret.yaml(비밀 설정)로 파일을 분리했다.
  • 연동: 위에서 설정한 .gitignore 덕분에 secret 파일은 로컬에만 존재하게 되어, GitHub에는 안전한 껍데기 설정만 올라가게 되었다. 이를 통해 협업 시 보안 사고를 원천 차단할 수 있었다.

📝 오늘의 회고

처음에는 .gitignore 설정이 사소해 보였지만, 제대로 설정하지 않았을 때 팀 전체의 생산성이 얼마나 떨어지는지(충돌 해결하느라 시간 낭비...) 뼈저리게 느꼈다. "개발의 시작은 환경 설정부터"라는 말을 실감한 하루였다.

'Projects > Team Projects' 카테고리의 다른 글

[Control Tower] 개발 효율은 AI로, 팀 성장은 믿음으로 (Cursor, DDD, Git 회고)  (0) 2026.01.23
[Control Tower] 프론트엔드 혼자서 이틀 만에 백엔드 API 명세서 역설계하기 (feat. AI)  (0) 2026.01.22
[Control Tower] Cursor와 Figma를 활용한 효율적인 UI/UX 프로토타이핑  (0) 2026.01.13
[Control Tower] Day 4: 깃허브 이슈 & PR, 노션에 '무료로' 자동 동기화하기 (삽질기 포함)  (0) 2026.01.09
[Control Tower] Day 1-2: 팀 빌딩, 항공사 HR SaaS 기획, 그리고 협업 환경 구축기  (0) 2026.01.07
'Projects/Team Projects' 카테고리의 다른 글
  • [Control Tower] 개발 효율은 AI로, 팀 성장은 믿음으로 (Cursor, DDD, Git 회고)
  • [Control Tower] 프론트엔드 혼자서 이틀 만에 백엔드 API 명세서 역설계하기 (feat. AI)
  • [Control Tower] Cursor와 Figma를 활용한 효율적인 UI/UX 프로토타이핑
  • [Control Tower] Day 4: 깃허브 이슈 & PR, 노션에 '무료로' 자동 동기화하기 (삽질기 포함)
tlsgkstj
tlsgkstj
짱구의 성장 일기
  • tlsgkstj
    코딩하는 짱구
    tlsgkstj
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • About (1)
      • Projects (35)
        • Personal Projects (21)
        • Team Projects (14)
      • Engineering (20)
        • CS & Tools (0)
        • Backend Core (15)
        • Frontend (1)
        • Infra & Cloud (2)
        • AI & Tools (1)
      • Trouble Shooting & Issues (0)
      • Growth & Career (38)
        • Interview Prep (0)
        • Retrospectives (38)
      • Archive (65)
        • TIL (8)
        • Daily Dev Q&A (56)
  • 블로그 메뉴

    • 홈
    • About
    • Projects
    • Tech Stack
    • Dev Log
    • GitHub
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    aws_s3
    backend
    경기기후바이브코딩
    SpringBoot
    데브페스트
    Project_Review
    Spring비교
    devlog
    REACT
    클로드코드
    프로덕트개발자
    network
    커리어리셋
    spring
    DevFestIncheon2025
    java
    til
    jpa
    OrphanRemova
    프로젝트회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
tlsgkstj
[Control Tower] Git 충돌 해결부터 사이드바 권한 분리까지
상단으로

티스토리툴바