05의 개발 계발

[TIL] 230420 gitignore를 무시한 .vscode 폴더 issue (+원인파악완료) 본문

TIL

[TIL] 230420 gitignore를 무시한 .vscode 폴더 issue (+원인파악완료)

생각하는 코댕이 2023. 4. 21. 01:22
728x90

TIL 학습목표

  • gitignore.io를 통해 .gitignore를 만들 수 있다.
  • VScode에 대한 .gitignore 설정을 이해할 수 있다.
  • .vscode 폴더가 github에 올라간 issue의 원인을 알고, 이를 방지하기 위해 필요한 것을 안다.

1) 문제점 (Problem)

github를 통해 팀프로젝트를 진행하던 중 어느샌가 .vscode 파일이 생겨버렸다.

그런데 레파지토리의 첫 커밋부터 gitignore를 추가 한 뒤 작업을 시작했기에,
vscode 관련 값들은 ignore(무시)되어 github에 올라가야 정상이었다.

원인을 찾지 못해 고생하였던 과정(Try)과,
끝내 양튜터님의 도움으로 파악할 수 있었던 원인(Solution)에 대해,
그리고 이를 방지하기 위한 방법(Learned)을 정리해보자.

첫 커밋에 작성되어있는 gitignore
.vscode 가 최초로 생긴 commit


2) 시도해본 것들 (Try)

▶commit 추적하기

해당 커밋으로부터 전후 커밋을 추적해보았다.

부모 커밋에서 vscode 폴더가 보이지 않은 것으로 보아, 최초 유입은 해당커밋(56f1092)이 확실하다.
하지만 여전히 원인을 모르겠다.

부모 커밋(직전 커밋) 확인
부모 커밋에는 .vscode 폴더가 생성되지 않았다.


▶GPT 에게 물어보기

하지만 나의 경우는 시작부터 gitignore가 추가된 상태에서 작업을 시작했으므로 위와 같은 일이 발생할 가능성이 없다.


▶튜터님의 도움! (feat.양튜터님)

그저 빛..

알게된 것들을 해결에서 살펴보자

 


3) 해결 (Solution)

gitignore의 VScode에 관한 defalut 값 살펴보기!

# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide

# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode

gitignore.io에서 제공하는 ignore defalut 값

gitignore 기본 셋팅 값 의미 이유
.vscode/* .vscode 하위 파일을 모두 무시 vscode에서 사용되는
불필요한 파일을 포함치 않도록 설정함
!.vscode/settings.json .vscode 하위 파일 중에
settings.json은 예외처리
개발자의 개인적인 설정을 포함하고 있어, 다른 개발자와 공유하거나 협업하는 경우 해당 설정을 유지하고자 할 때를 고려함
!.vscode/tasks.json .vscode 하위 파일 중에
tasks.json은 예외처리
프로젝트의 빌드, 배포, 테스트 등의 작업(Task) 설정을 포함하고 있어, 다른 개발자가 프로젝트를 빌드하거나 실행하는데 필요한 작업을 공유할 때를 고려함
!.vscode/launch.json .vscode 하위 파일 중에
launch.json은 예외처리
디버깅(Debugging) 설정을 포함하고 있어, 프로젝트의 디버깅에 사용되는 구성을 공유하고자 할 때를 고려함
!.vscode/extensions.json .vscode 하위 파일 중에
extensions.json은 예외처리
formatter와 같은 확장 기능을 다른 개발자와 공유하거나 협업하는 경우 해당 설정을 유지하고자  때를 고려함
!.vscode/*.code-snippets .vscode 하위 파일 중에
code-snippets 확장자는 예외처리
사용자 지정 코드 스니펫(Code Snippet) 설정을 포함하고 있어, 프로젝트에서 사용하는 사용자 지정 코드 조각을 공유하고자  때를 고려함

gitignore.io에서 vscode에 관해 제공하는 ignore defalut 값은 위와 같다.

즉, 처음부터 !.vscode/settings.json 에 의해 settings.json이 생성된다면 commit 될 수 밖에 없는 구조였다!

그리고 팀원이 작업 도중 "unibeautify"라는 확장을 추가 설치했던 것이 확인되었다.

4) 알게 된 점  (Learned)

원인을 알았다면 훗날을 위한 대책을 세워야한다.

튜터님의 조언과 함께 현업 개발자들의 경우를 찾아
위와 같은 일이 생기지 않기 위한 방법을 정리해보았다.

 

  1. 코드컨벤션을 확실히 정한 뒤 준수하며 협업을 진행한다.
  2. formatter 사용제한규칙을 세우기 or 프로젝트에서 사용할 formatter 설정한다.
  3. git add 전 항상 git status로 변화를 확인한다.(의도치않은 변화가 발생했는지 확인)  
  4. git add . 사용을 지양하고 git add <특정파일> 형태로 타겟팅하여 stage에 올리도록 한다.

깔끔한 github log는 제대로 짜여진 코드컨벤션과 개인의 노력으로 이루어진다.

 

코드컨벤션을 지정하지 않았던 부분과, 타겟팅하지 않고 add 하는 습관을 고치도록 하자!

728x90