필자는 필자가 본 적이없는 1 년 전에 내 repo에 커밋 된 파일을 발견했다. repo 공개를 설정하기 전에이 파일을 소개 한 커밋을 되돌리려 고하거나 실제로이 파일에 액세스 할 수 없도록 제거하고 싶습니다.git 히스토리에서 커밋 제거하기
대화 형 rebase
을 사용하여 원하지 않는 커밋을 삭제할 수있었습니다. 그것은 유망 해 보였지만 800에서 약 400 개의 커밋을 적용한 후에 충돌이 있습니다.
비선형 히스토리에 의해 충돌이 발생합니다. 브랜치가 있고 두 개의 브랜치에 하나의 파일이 수정되었습니다 (feature1과 feature2라고 말하면됩니다). 필자가 보았 듯이 git rebase
은이 병렬 히스토리를 선형으로 만들려고했는데, 평행하고 충돌하는 수정에서는 실패했습니다. 나는 더 많은 상황이 있기 때문에 그것을 고치려고하지 않으며, 그것들을 모두 고치는 큰 노력이 될 것입니다.
내 질문은 : 단순히 다른 커밋에 영향을주지 않고 분기 기록을 재구성하여 커밋 하나를 제거 할 수 있습니까?
내 파일이 한 번 추가되었으며 수정되지 않았으므로 다른 커밋 중 하나도 만지지 않았습니다.
관련 항목 : [Git 내역에서 중요한 파일 및 그 위탁 사항 제거] (http://stackoverflow.com/q/872565/456814), [Git 저장소의 커밋 기록에서 큰 파일 삭제/삭제 방법 ?] (http://stackoverflow.com/q/2100907/456814), [모든 Git 저장소 커밋 내역에서 파일을 완전히 제거] (http://stackoverflow.com/q/307828/456814), [git에서 파일 제거 저장소 (기록)] (http://stackoverflow.com/q/2164581/456814). –
기본적으로'git rebase'는 병합 커밋을 보존하지 않습니다. 그러나, [병합 커밋을 유지하려고 시도하면 이라고 말할 수 있습니다.] (https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html#_options) preserve-merges' 또는 '-p' 플래그를 사용하십시오. 이전에 만든 충돌 해결 방법을 다시 적용 할 지 모르겠습니다. –