이번 스파르타 스프링 캠프 과제를 진행하면서 Git 브랜치 기반 협업 흐름을 직접 연습해봤다.
단순히 기능을 만드는 게 아니라, 브랜치 → PR → merge 흐름을 익히는 게 목표였다.
그 과정에서 생각보다 헷갈리는 포인트들이 몇 가지 있어서 정리해본다.
1. git add . 했더니 원하지 않는 파일까지 같이 올라간 문제

처음에는 about 페이지만 커밋하려고 했는데,
갑자기 skills, goals 파일까지 함께 스테이징되어 있었다.
처음엔 “왜 다 올라가지?” 하고 당황했는데 이유는 간단했다.
git add .
이 명령어는 현재 위치 기준으로 변경된 모든 파일을 전부 스테이징하는 명령이었다.
✔ 해결 방법
특정 파일만 올리고 싶다면 파일을 직접 지정해야 한다.
git add feature/about.md
이미 올라간 파일은 아래 명령으로 스테이징을 취소할 수 있다.
git restore --staged feature/skills.md
git restore --staged feature/goals.md
2. 브랜치를 바꾸니까 파일이 사라진 것처럼 보인 현상
feature/about 브랜치에서 작업을 끝내고 feature/skills 브랜치로 이동했는데,
about.md 파일이 갑자기 안 보였다.
처음에는 “내 파일 어디 갔지?” 싶었지만 알고 보니 Git 구조 문제였다.
✔ 원인
Git 브랜치는 각각 독립된 작업 공간이다.
즉 브랜치를 바꾸면 파일 상태도 같이 바뀐다.
- feature/about → about.md 존재
- feature/skills → skills.md만 존재
그래서 파일이 사라진 게 아니라
“그 브랜치에 없는 것”이었다.
3. touch로 파일 만들 때 경로 에러 발생

처음에 이런 명령을 실행했다.
touch feature/about.md
그런데 에러가 발생했다.
No such file or directory
✔ 원인
feature 폴더가 없는 상태에서 하위 경로 파일을 만들려고 했던 것.
✔ 해결
먼저 폴더를 만들고 파일을 생성해야 했다.
mkdir feature
touch feature/about.md
이번 경험으로 느낀 점
- 브랜치는 “파일 폴더”가 아니라 “독립된 작업 공간”이다
- 파일이 사라진 것처럼 보일 때는 브랜치 상태를 먼저 확인해야 한다
- 경로와 현재 위치 개념이 생각보다 중요하다
한 줄 정리
Git은 파일을 관리하는 도구가 아니라 “브랜치 단위로 시간을 나눠서 관리하는 시스템”이다
'트러블슈팅' 카테고리의 다른 글
| Session 로그인 적용하면서 API 구조 리팩토링하기 (0) | 2026.07.09 |
|---|---|
| [IntelliJ IDEA 기능] Compact Middle Packages / 패키지 설정 (0) | 2026.07.07 |
| [Spring] 전체조회시, 조건 전체조회 (feat.@RequestParam) (0) | 2026.06.30 |
| ArrayList 기반 장바구니 구현 (0) | 2026.06.16 |
| [Java] Scanner 사용 시 nextInt(); 주의점! (0) | 2026.06.04 |