> 개발 도구 > 자식 > git에서 기록 커밋을 삭제하는 방법

git에서 기록 커밋을 삭제하는 방법

PHPz
풀어 주다: 2023-04-26 09:51:26
원래의
8948명이 탐색했습니다.

최근에는 강력한 버전 제어 도구인 Git이 개발 팀 사이에서 점점 인기를 얻고 있습니다. 하지만 Git을 사용하다 보면 가끔 잘못된 커밋이 나타날 수 있고, 이러한 커밋이 프로젝트에 부정적인 영향을 미칠 수도 있습니다. 이러한 기록 커밋을 삭제하는 방법은 Git 사용자가 자주 직면하는 문제가 되었습니다. 이 문서에서는 Git에서 기록 커밋을 삭제하는 방법을 자세히 설명합니다.

1. Git 제출 내역

Git 제출 내역은 여러 개의 제출로 구성됩니다. Git에서 커밋을 할 때마다 새로운 커밋이 생성됩니다. 각 제출물에는 자체 식별자(SHA)가 있으며 제출물 작성자, 날짜, 제출물 설명 등의 정보가 포함되어 있습니다.

Git 명령줄이나 Git 클라이언트 도구를 통해 Git의 커밋 기록을 볼 수 있습니다. 예를 들어 Git 명령줄에서 다음 명령을 사용하면 이 프로젝트의 커밋 기록을 볼 수 있습니다.

git log
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 명령은 현재 브랜치의 모든 커밋을 역순으로 나열합니다. 각 커밋에는 자체 SHA, 커미터 이름과 이메일, 커밋 날짜, 커밋 메시지가 있습니다.

2. 과거 제출물을 삭제하는 이유

공동 개발 과정에서 잘못된 제출물이 발생하게 되는 많은 인적 요인이 있을 것입니다. "잘못된 제출물"은 오류, 보안 취약성, 민감한 정보 등을 포함할 수 있는 제출물입니다. 이러한 잘못된 커밋이 메인라인 브랜치에 병합되면 프로젝트의 다른 부분에 부정적인 영향을 미칠 수 있습니다.

또한, 비밀번호, API 키, 기타 민감한 정보 등 코드를 제출하기 전에 다른 사람에게 보여주고 싶지 않은 콘텐츠를 포함하는 경우 제출 후 노출될 수 있습니다. 현재로서는 제출 기록을 삭제하는 것이 사용자 개인정보를 보호하는 방법입니다.

3. Git에서 기록 커밋을 삭제하는 방법

Git에서는 기록을 다시 작성하는 방법과 Git의 필터링 메커니즘을 사용하는 두 가지 방법이 있습니다.

  1. 기록 다시 쓰기

기록 다시 쓰기는 실제로 기록 커밋을 수정하여 수행됩니다. 이는 이미 게시된 커밋을 변경하고 재배열하는 것을 의미합니다. Git 커밋 기록을 삭제하는 단계는 다음과 같습니다.

(1) 다음 명령을 사용하여 커밋 기록을 확인합니다.

git log
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

(2) 삭제하려는 커밋의 SHA를 찾아 기록합니다.

(3) 기록을 다시 쓰려면 다음 명령을 사용하십시오. 이 명령에서 SHA를 삭제하려는 커밋의 SHA로 바꿉니다.

git rebase -i SHA^
로그인 후 복사

이 명령은 선택한 커밋의 마지막 커밋 이후 모든 커밋 목록이 포함된 편집기를 엽니다.

(4) 삭제하려는 커밋 앞의 "선택"을 "삭제"로 변경하거나 파운드 기호로 해당 줄을 주석 처리합니다. 편집기를 저장하고 닫습니다.

(5) 다음 명령을 실행하여 Git에서 커밋을 강제로 덮어씁니다.

git push --force
로그인 후 복사

마지막으로 다음 명령을 사용하여 커밋 기록을 성공적으로 삭제했는지 확인할 수 있습니다.

git log
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
  1. Git 필터링 메커니즘 사용

In Git, filter-branch 명령은 커밋 기록을 삭제하는 데 도움이 될 수 있습니다. 이 명령은 전체 저장소를 복사하고 지정된 필터를 각 커밋에 적용합니다. 다음은 Git의 필터링 메커니즘을 사용하여 Git 커밋 기록을 삭제하는 단계입니다.

(1) 다음 명령을 사용하여 복사본 저장소를 만듭니다.

git clone --mirror <Git URL>
로그인 후 복사

(2) 다음 명령을 사용하여 복사본 저장소를 입력합니다.

cd <repository name>.git
로그인 후 복사

(3) 기록 커밋을 삭제하려면 다음 명령을 사용합니다.

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch <filename>" --prune-empty --tag-name-filter cat -- --all
로그인 후 복사

이 명령은 이라는 파일의 기록 커밋을 삭제하는 데 사용됩니다. 이 명령은 필요에 따라 변경할 수 있습니다. 여기서 --tag-name-filter cat은 태그를 수정하는 데 사용됩니다. 마지막으로 이 명령은 모든 분기에 적용됩니다.

(4) 다음 명령을 사용하여 변경 사항을 Git 저장소에 푸시합니다.

git push --all --force
로그인 후 복사

마지막으로 다음 명령을 사용하여 커밋 기록이 성공적으로 삭제되었는지 확인할 수 있습니다.

git log
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

IV 요약

기록을 사용하거나 Git의 필터링 메커니즘을 사용하면 Git에서 기록 커밋을 삭제할 수 있습니다. 그러나 커밋 기록을 삭제하기 전에 신중하게 생각하고 모든 팀원이 변경의 영향을 이해했는지 확인해야 합니다. 또한 저장소 오버헤드를 줄이기 위해 변경 사항을 병합하기 전에 Git 리포지토리를 정기적으로 정리해야 합니다.

위 내용은 git에서 기록 커밋을 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿