기록에서 커밋 제거
나는 내 코드에 욕을 입력하고 마스터 브랜치에 코드를 눌렀습니다.사람들이 나쁜 것을 당기지 않도록 그 후에 몇 번 더 밀었지만, 저는 여전히 범죄 기록에서 저주의 단어를 찾을 수 있습니다.
다음에 파일을 추가하지 않습니다..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에만 있거나 변경 내용을 체크아웃한 사람이 없는 경우:
- 사용:
git log
제거할 커밋을 찾습니다.해시 복사(e8348ebe553102018c...와 같은 긴 시퀀스).
- 사용:
git rebase -i [hash]~ : for example git rebase -i e8348~
필요 없는 커밋을 제거하고 파일을 저장하기만 하면 됩니다.
대화형 Gitrebase를 사용하면 중단된 커밋을 수정할 수도 있습니다. 이 커밋을 제거할 필요가 없습니다.
서버에 변경사항을 적용했거나 이미 변경사항을 받은 사용자가 있으면(기록을 변경하지 않음) 팀에 심각한 문제가 발생할 수 있습니다.
이것은 나에게 도움이 됩니다.
git log
제거할 커밋을 찾아 해당 해시를 복사합니다.git rebase -i <commit_hash>~
그러면 텍스트 편집기가 열립니다.- 텍스트 편집기에서 전환
pick
로.drop
당신의 특별한 약속을 위하여.
저는 최근에 한 팀과 일하고 있었고 Git이 이것에 대한 해결책을 가지고 있다는 것을 발견했습니다.
이 링크에 있는 모든 것
은 는하사용을 입니다.git-filter-repo
그리고. BFG Repo-Cleaner
여기 그것을 위한 멋진 비디오가 있습니다.
https://www.youtube.com/watch?v=z8tIOYg_oho
언급URL : https://stackoverflow.com/questions/30893040/remove-commit-from-history
'programing' 카테고리의 다른 글
mongoDB 데이터를 CSV 형식으로 내보내는 방법은 무엇입니까? (0) | 2023.06.21 |
---|---|
400 프로젝트에 대한 청구 계정을 찾을 수 없습니다.서비스 활성화를 위해 청구를 활성화해야 합니다. (0) | 2023.06.21 |
지정된 디렉토리가 Ruby에 있는지 확인하는 방법 (0) | 2023.06.16 |
VBA 코드를 사용하여 Excel 2003에서 Excel 워크시트를 이미지로 내보내는 방법은 무엇입니까? (0) | 2023.06.16 |
데이터 프레임에서 특정 열 추출 (0) | 2023.06.16 |