올릴 파일과 올리지 않을 파일을 나누고, 저장소를 다른 사람이 읽을 수 있게 남깁니다.
node_modules/: 설치 결과입니다. package.json이 있으면 npm install로 다시 생깁니다..env, .env.local: API 키, 비밀번호, 토큰이 있습니다..next/..DS_Store, Thumbs.db.의존성 목록과 소스, README, 설정 예시(.env.example처럼 값이 비어 있는 파일)는 올립니다. 배포 서버는 .env.local을 받지 못합니다. 같은 이름은 Vercel 환경 변수에 따로 넣습니다.
저장소 루트의 .gitignore에 적힌 패턴은 git status에 나오지 않습니다. 웹 프로젝트의 최소 예입니다.
node_modules/
.next/
.env
.env.local
.DS_Store
Thumbs.db
이미 한 번 커밋된 파일은 .gitignore에 적어도 추적에서 빠지지 않습니다. 이력에는 남기고 이후 추적만 끊으려면 캐시에서 제거한 뒤 커밋합니다. 디스크의 폴더는 남습니다.
git rm -r --cached node_modules
git commit -m "node_modules를 추적에서 제거"
GitHub는 저장소 첫 화면에 README.md를 보여 줍니다. 받는 사람이 바로 실행할 수 있을 정도면 됩니다.
파일을 지우고 다시 커밋해도 예전 커밋에는 그 내용이 남습니다. main에서 그 커밋을 지우는 재작성은 이미 clone한 사람과 어긋납니다.
먼저 그 키와 토큰을 서비스에서 폐기하고 새로 발급합니다. 공개 저장소면 폐기 전에는 노출된 것으로 봅니다. 이력에서 지우는 절차는 GitHub의 민감 데이터 제거 문서를 따르고, 그 전에 팀과 원격 이름을 확인합니다.
Issues는 버그, 할 일, 질문을 저장소에 남기는 GitHub 기능입니다. Pull Request가 “이 변경을 넣어 달라”라면, Issue는 “이 문제가 있다”입니다. PR 본문에서 #12처럼 번호를 적으면 그 이슈와 연결됩니다.
제목만으로 재현이 되게 적습니다. 무엇을 했는지, 기대한 결과, 실제 결과, 환경(브라우저, OS)이면 충분합니다.
| 상황 | 명령 |
|---|---|
| 방금 고친 내용을 커밋 전에 버리기 | git restore 파일. 저장한 수정이 사라집니다. |
| 스테이징만 취소 | git restore --staged 파일. 파일 내용은 남습니다. |
| 최근 커밋 메시지 오타, 아직 push 전 | git commit --amend. push한 커밋에는 쓰지 않습니다. |
| 이력 짧게 보기 | git log --oneline |