개발관련/Git

현재 커밋을 Git 저장소에서 유일한 (초기) 커밋으로 만드는 방법

Rateye 2021. 10. 12. 10:42
728x90
반응형
질문 : 현재 커밋을 Git 저장소에서 유일한 (초기) 커밋으로 만드시겠습니까?

현재 Github 저장소로 푸시하는 로컬 Git 저장소가 있습니다.

로컬 저장소에는 ~ 10 개의 커밋이 있으며 Github 저장소는 이것의 동기화 된 복제본입니다.

내가하고 싶은 것은 로컬 Git 리포지토리에서 모든 버전 기록을 제거하는 것이므로 리포지토리의 현재 콘텐츠가 유일한 커밋으로 표시되므로 리포지토리 내에있는 이전 버전의 파일은 저장되지 않습니다.

그런 다음 이러한 변경 사항을 Github에 푸시하고 싶습니다.

Git rebase를 조사했지만 특정 버전을 제거하는 데 더 적합한 것으로 보입니다. 또 다른 잠재적 인 해결책은 로컬 리포지토리를 삭제하고 새 리포지토리를 만드는 것입니다.

ETA : 추적되지 않는 특정 디렉토리 / 파일이 있습니다. 가능하면 이러한 파일의 추적을 해제하고 싶습니다.

답변

여기 무차별 대입 접근 방식이 있습니다. 또한 저장소의 구성을 제거합니다.

참고 : 저장소에 하위 모듈이 있으면 작동하지 않습니다! 서브 모듈을 사용한다면, 예를 들어 인터랙티브 리베이스를 사용해야합니다.

1 단계 : 모든 기록 제거 ( 백업이 있는지 확인하십시오. 되돌릴 수 없음 )

cat .git/config  # note <github-uri>
rm -rf .git

2 단계 : 현재 콘텐츠 만 사용하여 Git 리포지토리 재구성

git init
git add .
git commit -m "Initial commit"

3 단계 : GitHub로 푸시합니다.

git remote add origin <github-uri>
git push -u --force origin master
출처 : https://stackoverflow.com/questions/9683279/make-the-current-commit-the-only-initial-commit-in-a-git-repository
728x90
반응형