programing

기록에서 커밋 제거

starjava 2023. 6. 21. 22:00
반응형

기록에서 커밋 제거

나는 내 코드에 욕을 입력하고 마스터 브랜치에 코드를 눌렀습니다.사람들이 나쁜 것을 당기지 않도록 그 후에 몇 번 더 밀었지만, 저는 여전히 범죄 기록에서 저주의 단어를 찾을 수 있습니다.

다음에 파일을 추가하지 않습니다..gitignore왜냐하면 우리는 그 파일이 필요하기 때문입니다.

기록에서 커밋을 삭제할 수 있는 방법이 있습니까?

일단 레포를 추진하면, 여러분은 역사를 바꾸는 것을 정말로 원하지 않을 것입니다.그러나 위반한 커밋 이후 아무도 보고서를 철회하거나 가져오지 않았다고 확신하는 경우 두 가지 옵션이 있습니다.

"불량" 커밋(및 그 이후에 발생한 모든 커밋)을 모두 제거하려면 다음을 수행합니다.git reset --hard ABC(계속)ABC는 "나쁜" 커밋의 형(해당 분기의 새 헤드 커밋으로 보려는 형)의 해시입니다.그럼.git push --force(또는)git push -f).

해당 커밋을 편집하고 이후에 발생한 커밋을 유지하려면 다음 작업을 수행합니다.git rebase -i ABC~이렇게 하면 편집기가 실행되고 커밋 목록이 문제가 되는 커밋부터 표시됩니다.플래그를 "선택"에서 "e"로 변경하고 파일을 저장한 후 편집기를 닫습니다.그런 다음 필요한 파일을 변경하고 다음 작업을 수행합니다.git commit -a --amend그럼 하시오git rebase --continue다음과 같이 모든 것을 추적합니다.git push -f.

다시 한 번 말씀드리지만, 이러한 옵션은 아무도 귀하의 위반 커밋을 포함하는 풀 또는 가져오기를 수행하지 않은 경우에만 사용할 수 있습니다.만약 그렇다면, 이러한 단계를 수행하는 것은 상황을 더 악화시킬 뿐입니다.

로컬 PC에만 있거나 변경 내용을 체크아웃한 사람이 없는 경우:

  1. 사용:
    git log
    

제거할 커밋을 찾습니다.해시 복사(e8348ebe553102018c...와 같은 긴 시퀀스).

  1. 사용:
    git rebase -i [hash]~
    
    : for example
    git rebase -i e8348~
    

필요 없는 커밋을 제거하고 파일을 저장하기만 하면 됩니다.

대화형 Gitrebase를 사용하면 중단된 커밋을 수정할 수도 있습니다. 이 커밋을 제거할 필요가 없습니다.

서버에 변경사항을 적용했거나 이미 변경사항을 받은 사용자가 있으면(기록을 변경하지 않음) 팀에 심각한 문제가 발생할 수 있습니다.

이것은 나에게 도움이 됩니다.

  1. git log제거할 커밋을 찾아 해당 해시를 복사합니다.
  2. git rebase -i <commit_hash>~그러면 텍스트 편집기가 열립니다.
  3. 텍스트 편집기에서 전환pick로.drop당신의 특별한 약속을 위하여.

저는 최근에 한 팀과 일하고 있었고 Git이 이것에 대한 해결책을 가지고 있다는 것을 발견했습니다.

이 링크에 있는 모든 것

https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository

은 는하사용을 입니다.git-filter-repo 그리고. BFG Repo-Cleaner

여기 그것을 위한 멋진 비디오가 있습니다.

https://www.youtube.com/watch?v=z8tIOYg_oho

언급URL : https://stackoverflow.com/questions/30893040/remove-commit-from-history

반응형