2013-06-18 3 views
0

커다란 자식 커밋을 저의 로컬 레포에서 약 5 커밋 전에했습니다. 나는이 커밋을 제거 할 필요가있다. (커밋과 관련된 커다란 파일/비디오) 그래서 나는 최신 커밋을 github에 업로드 할 수있다.커다란 파일로 과거 자식 커밋을 제거하십시오.

어떤 방법으로 Rebase 명령을 사용합니까?

기본적으로 나는이 커밋에 실수로 추가 한 비디오 파일을 제거해야하지만이 커밋으로 변경된 코드는 유지해야합니다.

이를 찾았지만, 내가 처음으로 REBASE 시도하기 전에 확인하고 싶었 : How can I remove a commit on GitHub?

+1

가의 사본을 작성하여 단지 레포 먼저. 이러한 단계를 따라 대화 형 rebase를 수행하고 커밋을 삭제할 수 있지만 코드 변경 사항도 제거됩니다 (커밋이 동일한 경우). 그런 다음 다시 적용해야합니다. 또한 리베이스를 사용하면 커밋을 편집 할 수있는 옵션이 주어 지므로 비디오 파일을 언 스테이지에 넣고 코드 변경 내용을 다시 커밋 할 수 있습니다. 선을 삭제하는 대신 지침을 따라 편집을 위해 커밋을 표시하고 비디오 파일을 스테이지에서 제거한 다음 코드 변경을 커밋합니다. – cjc343

답변

1

당신은 커밋의 역사를 추적하기 위해 태그를 사용할 수 있습니다. 이것은 리베이스를 사용하지 않고 리베이스 같은 작업을 수행하는 한 가지 방법입니다.

그것은 (단지 확인 일이 괜찮 확인하기 위해 단계의 몇 가지)과 같이 갈 수 있습니다

git tag wip 
git reset --hard wip~4 
git rm -f file1 file2 ... 
git commit --amend -C wip~4 
git cherry-pick `git rev-list wip~4..wip` 
git diff wip 
git tag -d wip 
git push -n 

또 다른 방법은 대화 형 모드에서 REBASE 함께 :

git rebase -i HEAD~5 
관련 문제