git-filter-repo (window)

Jayden Yun·2023년 7월 3일
0

오랜만에 작성하는 벨로그..

github을 통하여 형상관리를 하던 소스코드를 public으로 변경해야 하는 일이 생겼다.

보안적으로 공개되면 안되는 소스코드를 어떻게할지 열심히 구글링 하다 찾은 방법

git-filter-repo를 통해 history를 지울 수 있었다.

바쁘니 본론만 바로

일단 window에서 사용하려면 scoop을 설치해야했다.

scoop 설치

scoop 설치 방법은 powerShell을 통해 아래와 같이 입력한다

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): 

Y 입력

irm get.scoop.sh | iex

scoop 설치 완료

참조 scoop.sh

git-filter-repo 설치

scoop install main/git-filter-repo

기존에 사용하던 repo 에서 바로 실행하지 않고 따로 clone을 받은 후 작업하였다.

커밋한 파일 및 히스토리를 모두 삭제하는 방법

git filter-repo --use-base-name --path [FILENAME] --invert-paths

위의 코드에서 FILENAME을 변경하여 사용하면된다.

코드가 정상작동 하였다면 푸쉬를 해야하는데

git remote add origin [git URL]

새로 clone을 받았기 때문에 원격 저장소를 다시 지정해주고

git push origin main

푸쉬를 시도한다.

기본적으로 사용하던 repo에 push를 시도하면 아래와 같은 오류가 날 것이다.
Updates were rejected because the tip of your current branch is behind its remote..

이럴경우 아래와 같이 시도하면 성공

git push origin +main

혹시 모든 자료가 날라갈 수 있으니 백업은 필수다

profile
이것저것 알고 싶은게 많은 개발자

0개의 댓글