드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Ann
  • EC2
  • Callback
  • github
  • 액션바
  • Retrofit2
  • 안드로이드 스튜디오
  • flask
  • GET
  • Python
  • Lambda
  • rest api
  • CNN
  • pandas
  • tensorflow
  • 네이버 API
  • API
  • Streamlit
  • 서버리스
  • 깃이그노어
  • fine tuning
  • AWS
  • JWT
  • 딥러닝
  • Transfer Learning
  • serverless
  • Java
  • volley
  • AWS Lambda
  • aws s3

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Git

GitHub에 잘못 올린 파일 제거 및 히스토리에서 삭제

2023. 3. 31. 12:57

프로젝트 중 각종 key와 비밀번호 정보가 포함된 config.py 파일을 깃허브에 푸쉬해놓고

레파지토리를 private으로 해놨었는데, 해당 레파지토리를 다시 public 으로 바꾸려니 gitignore에 추가 뿐 아니라

history에 해당 파일의 정보가 남아있어서, history 까지 삭제해야했다.

그래서 이 포스팅엔 파일 및 히스토리를 삭제하기 위해 내가 진행한 과정을 남기려 한다.

 

1. .gitignore 파일에 config 파일을 추가하려면, 파일 이름을 입력하고 줄 바꿈으로 구분합니다.

config.py

 

2. .gitignore 파일을 저장하고 Git에 추가합니다.

git add .gitignore

 

3. 변경 사항을 커밋합니다.

git commit -m "Add config.py to .gitignore"

 

이제 Git은 config.py 파일을 추적하지 않습니다. 이 파일은 깃허브에 푸시되지 않으며, 다른 사용자들이 이 파일을 볼 수 없습니다.


4. 이미 config.py 파일이 깃허브에 푸시된 경우, 이 파일을 Git 기록에서 삭제해야 합니다. 

git rm --cached config.py
git commit -m "Remove config.py from Git tracking"
git push

 

 

여기서부터는 히스토리에서 삭제하는 방법입니다.

문제가 생길 수 있으니 이 작업을 수행하기 전에, 모든 변경 사항을 커밋하고 레파지토리를 백업하세요.

 

 

1. 레파지토리에 있는 모든 브랜치를 가져옵니다.

git fetch --all

 

2. 히스토리를 수정할 브랜치로 이동하세요 (여기선, main 브랜치로 이동)

git checkout main

 

3. git filter-branch를 사용하여 파일을 제거합니다. 

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch ./config.py" --prune-empty --tag-name-filter cat -- --all

이 명령은 현재 위치의 config.py 파일을 모든 커밋에서 제거합니다.

--ignore-unmatch 뒤에 파일 경로를 써주면 되는데, C:/Users 로 시작하는 절대 경로를 입력하니 동작하지 않았습니다.

./ 을 사용한 상대경로를 쓰니 잘 동작했습니다.

 

4. 필터링된 브랜치를 원격 레파지토리에 강제 푸시합니다. 이 작업은 깃 히스토리를 덮어쓰므로 주의하세요.

git push origin --force --all

 

5. (선택 사항) 태그가 있는 경우에는 다음 명령어를 실행하여 리모트 태그도 강제로 푸시하세요.

git push origin --force --tags

 

'Git' 카테고리의 다른 글

.gitignore에서 파일을 해제하고 다시 Git 추적에 등록하기  (0) 2023.03.31
특정 프로젝트에 있는 파이썬 패키지만 requirements.txt 로 만들기 - pipreqs  (0) 2022.12.23
GitHub Actions를 이용한 EC2 서버 CI/CD  (0) 2022.12.20
GitHub 사용 방법 - Commit, Push, Pull  (0) 2022.12.12
GitHub 사용 환경 구축하기(2) - Visual Studio Code 연동  (0) 2022.12.12
    'Git' 카테고리의 다른 글
    • .gitignore에서 파일을 해제하고 다시 Git 추적에 등록하기
    • 특정 프로젝트에 있는 파이썬 패키지만 requirements.txt 로 만들기 - pipreqs
    • GitHub Actions를 이용한 EC2 서버 CI/CD
    • GitHub 사용 방법 - Commit, Push, Pull
    드레:
    드레:

    티스토리툴바