滿天的星座2017-04-28 09:08:29
이 질문은 약간 A/B입니다. 오래 전에 커밋 레코드를 삭제하는 시나리오를 설명하지 않았기 때문입니다. 이는 이후 Git 사용 선택에 영향을 미치기 때문에 매우 중요합니다. 예:
git rebase -i <ref>
git rebase --onto <ONTO_BASE_ref> <START_ref> <END_ref>
과 같이 START
은 END
사이의 부분을 유지해야 하는 부분이고, ONTO_BASE
은 최신 기준점입니다. 즉, ONTO_BASE
과 START
사이의 기록은 삭제됩니다. git checkout --orphan new_start
이라는 분기를 생성합니다. 이 분기에는 기록이 없지만 모든 파일은 그대로 존재하므로 이에 따라 다시 제출을 시작할 수 있습니다. 완료 후에는 이전 분기를 직접 삭제할 수도 있습니다. 또한 새 분기의 시작점을 지정할 수도 있습니다. 기본값은 물론 new_start
부터 시작됩니다. HEAD
git replace
으아악
은 다음과 같이 사용됩니다(예: 스크립트가로 저장됨): git-detach
, 여기서 git-detach <ref>
는 보관하려는 기록 기록의 시작점입니다. <ref>
git 개체는 여전히 존재합니다( 즉, 을 직접 복구하고 확인할 수 있습니다. 이 기록을 완전히 삭제하려면(저장소의 무게를 줄이기 위해) git-reflog
을 사용하면 절대 얻을 수 없습니다. 다시. git gc --prune
추신: 이 스크립트는 Orphan Branch에 의존하며, 이는 Git의 하위 버전(아마 < v1.7.x)에서 지원되지 않습니다. 대안이 있는 경우 직접 Google에 문의하세요.