Medium - How To Remove Committed Files From Git Version Control

원문 - Ali Kamalizade

Trend 파악을 위한 Medium 기고문 포스팅 - 깃 버전 컨트롤에서 커밋된 파일을 지우는 방법; 저장소에 푸시되면 안되는 파일을 제거

Photo by Yancy Min on Unsplash

대부분의 개발자는 저장소에 뭔가를 커밋하고 있습니다. 공공 저장소라고 하더라도 우리는 비밀정보, 빌드파일, 임시파일 같은 것들은 커밋하고 싶지 않죠. 이런 것들은 데이터 베이스 접속정보나 API 키 같은 민감한 정보를 노출시킬 수도 있고 필요 없는 파일이 커밋되거나 사용자마다 다르게 지정되는 파일들을 포함시킬 수도 있습니다.

사용자 특정 파일(User-specific files)의 예로 좋은 것은 JetBrains IDE가 만들어 주는 .idea 폴더입니다. 예전에 누군가가 버전 컨트롤을 위해 해당 파일을 추가했다고 가정해 봅시다. 구성원 중 누구라도 자신의 IDE 설정 파일을 수정하는 경우 깃은 파일이 변경되었다고 할 것입니다. 그러나 다른 사람들에게 IDE 설정을 똑같이 하도록 강제할 수는 없는 노릇이고 게다가 이런 것은 머지/리베이스를 더욱 어렵게 합니다.

결과적으로 저는 해당 폴더를 버전 컨트롤에서 삭제하길 원했고 누구도 다시 저장소에 해당 파일을 추가하지 못하도록 하고 싶었죠. 그러나 제 로컬에서는 필요한 파일이니까 삭제되길 원치 않았습니다. 그러므로 간단히 파일을 제거하고 커밋을 하면 풀링 하는 동시에 로컬에서도 삭제될 것이기 때문에 간단하지가 않았습니다.

그래서 우리는 로컬 데이터를 수정하지 않고 버전 컨트롤에 커밋된 파일들을 제거하길 원하는 것입니다. 깃을 사용하면 이런 문제를 쉽게 해결할 수 있습니다.

How to remove committed files from Git version control

  1. .gitignore 파일이 없다면 해당 파일을 만드세요
  2. .gitignore 파일을 수정해서 무시하고 싶은 파일이나 폴더를 작성하세요
  3. .git rm –cached path/to/file 다음의 명령어를 실행하시면 깃이 리스트에 있는 파일을 삭제할 것입니다. –cached 플래그는 로컬 카피는 유지하면서 저장소에 파일만 삭제하고 싶을 때 사용합니다.
  4. git status 를 사용해서 버전 컨트롤에서 파일이 삭제된 것을 확인합니다.
  5. 저장소에 변경사항을 push 합니다.

이런 단계를 거치면 버전 컨트롤에서 사라져야할 파일은 없어지고 로컬 폴더에는 남아 있을 것입니다. 다른 개발자가 풀을해도 여러분의 변경사항은 아무 문제가 없습니다. 깃 히스토리에서는 데이터 조회가 가능하므로 민감정보와 같은 것을 삭제하고 싶다면 깃 히스토리에서도 삭제 하셔야합니다.

Summary

  • 깃 저장소에 커밋한 파일을 삭제하는 방법; .gitignore를 사용하면 저장소의 파일은 날리고 로컬의 파일은 유지할 수 있다.
  • 민감정보의 경우 깃 히스토리에서도 지워야 한다.

© 2019. All rights reserved.

Powered by Hydejack v8.1.1