풀먹고 개발공부하는 노동자

.gitignore파일을 수정했을 때. 바로 적용되지 않는다면? (git 캐시를 삭제/.gitignore파일의 역할) 본문

Code/필기

.gitignore파일을 수정했을 때. 바로 적용되지 않는다면? (git 캐시를 삭제/.gitignore파일의 역할)

홀로수키 2024. 7. 3. 12:32

상황 :

  • 퍼블리싱 환경 세팅을 할 때. gitignore파일에 dist폴더를 추가했다. (커밋 할 때마다 생기는 파일 충돌을 피하기 위해!)
  • 그런데 개발자가 dist를 동의 없이 삭제....했다.
  • 퍼블리싱 파일을 수정할 때마다 dist 파일들도 커밋을 해야 하는 번거로운 상황이 되었다. 충돌 이슈..

문제 :

  • . gitignore파일에 다시 dist를 재적용했다. 그런데.. 작동을 하지 않는 것리다! 
  • 커밋 목록에 계속 dist파일들이 줄지어 있는 상황.

해결 :

언제나 그렇듯이 이런 상황은 분명.. 내가 처음이 아닐 것이라 확신했다. 역시나 답이 있다. html파일을 수정해도 브라우저에 바로 반영이 되지 않는 경우는 보통 적용 시간이 오래 걸리거나, 캐시 삭제를 하지 않아서다. 
이 문제에서는 캐시 삭제와 같은 맥락으로 해결할 수 있었다.
 
내가 해결한 방법을 간단히 정리하자면,
1. gitignore파일 수정
2. 아래 내용을 터미널 입력 후 엔터!
(나는 git push origin을 깃허브데스크톱에서 적용)

git rm -r --cached .
git add .
git commit -m "커밋메세지"
git push origin [브랜치명]

 
3. 다시 확인해 보니 커밋 목록에 dist파일을 더 이상 볼 수 없게 되었다.

 
GPT의 답변 : 
.gitignore 파일에서 dist를 삭제한 후 다시 추가했는데 작동하지 않는다면, 이미 Git이 dist 디렉토리를 트래킹 하고 있을 가능성이 큽니다. 이러한 경우, Git 캐시를 삭제하여 Git이 dist 디렉토리를 무시하도록 해야 합니다.
 
1. Git 캐시에서 dist 디렉토리 삭제: 다음 명령을 사용하여 Git 캐시에서 dist 디렉토리를 삭제합니다.

git rm -r --cached dist

 
2. 변경 사항 커밋: dist 디렉토리를 Git 캐시에서 삭제한 후, 변경 사항을 커밋합니다.

git commit -m "Remove dist from tracking"

 
3. .gitignore 파일에 dist 추가: .gitignore 파일에 dist를 다시 추가했는지 확인합니다. .gitignore 파일이 다음과 같이 구성되어야 합니다:

dist/

 
4. 변경 사항 커밋: .gitignore 파일에 변경 사항이 있다면, 이를 커밋합니다.

git add .gitignore
git commit -m "Add dist to .gitignore"

이 과정을 통해 Git이 다시 dist 디렉토리를 무시하도록 설정할 수 있습니다. 전체적으로 다음과 같은 명령들을 실행하게 됩니다:

git rm -r --cached dist
git commit -m "Remove dist from tracking"
echo "dist/" >> .gitignore  # 이미 추가되어 있다면 이 명령은 생략해도 됩니다.
git add .gitignore
git commit -m "Add dist to .gitignore"

 

궁금하다 :

 
1. 디렉토리를 트래킹하다.
.gitignore 파일에 dist 디렉토리를 추가하기 전에 Git이 이미 dist 디렉토리와 그 안의 파일들을 추적하고 있다는 뜻입니다. 즉, 이전에 .gitignore에 dist를 추가하기 전 또는 .gitignore에서 dist를 삭제한 후에 커밋된 dist 디렉토리 내의 파일들이 Git의 버전 관리 대상에 포함되어 있다는 의미입니다. 이런 상황에서는 .gitignore 파일을 통해 무시하려는 파일이나 디렉토리를 Git의 캐시에서 제거하는 추가적인 작업이 필요합니다.
 
2. gitignore 파일의 역할
.gitignore 파일은 Git 버전 관리 시스템에서 특정 파일이나 디렉토리를 무시하도록 지시하는 설정 파일입니다. 이 파일에 지정된 패턴에 맞는 파일이나 디렉토리는 Git의 추적 대상에서 제외되어, 의도하지 않은 파일이 버전 관리에 포함되는 것을 방지합니다.

  • 개인적인 설정 파일 무시
  • 개발 환경마다 설정 파일이 다를 수 있습니다. 예를 들어, IDE의 설정 파일이나 로컬 개발 환경의 설정 파일은 다른 사람과 공유할 필요가 없으므로 무시할 수 있습니다.
  • 빌드 아티팩트 및 배포 파일 무시
  • 빌드 과정에서 생성되는 파일이나 디렉토리(예: dist/, build/, bin/ 등)는 소스 코드에 포함될 필요가 없습니다. 이러한 파일들은 재생성 가능하기 때문에 버전 관리에서 제외합니다.
  • 로그 파일 무시
  • 애플리케이션 실행 중 생성되는 로그 파일(예: *.log)은 지속적으로 변경되며 버전 관리의 대상이 아닙니다. 이런 파일을 무시하여 저장소를 깨끗하게 유지할 수 있습니다.
  • 운영체제 및 편집기 관련 파일 무시
    운영체제나 텍스트 편집기가 생성하는 임시 파일이나 설정 파일(예: .DS_Store, Thumbs.db, *.swp)을 무시할 수 있습니다.

다음은 .gitignore 파일의 예시입니다.

# 컴파일된 소스 #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# 디렉토리 무시 #
###################
node_modules/
dist/
build/

# 로그 파일 무시 #
###################
*.log

# 개인적인 설정 파일 무시 #
############################
.vscode/
.idea/
*.suo
*.user
*.userosscache
*.sln.docstates

# 운영체제 관련 파일 무시 #
###########################
.DS_Store
Thumbs.db

 
즉,
.gitignore 파일은 불필요한 파일이 Git 저장소에 포함되지 않도록 도와주는 중요한 역할을 한다는 것!
이를 통해 저장소를 깔끔하게 유지하고, 다른 개발자와의 협업에서 불필요한 파일 충돌을 방지할 수 있다.
 

이놈의 짤은 볼때마다 웃겨터짐 (개발자들의 춤사위)
Comments