2012-11-27 3 views
4

내 프로젝트에서 git 리포지토리를 사용하고 있습니다. 나는 실수로 2 개의 커밋을 푸시해야합니다. 그리고 어떤 사람들은 그 사이에 최선을 다했습니다. 내 푸시 된 커밋을 제거 할 수 있습니까 아니면 내 코드 변경 내용을 제거하고 새로운 커밋으로 푸시해야합니다. 어떤 커밋이 커밋 된 이후입니다.강제 푸시 된 커밋

망할 놈의 마스터 지점 :

날에 의해 // B를

나에 의해 // 커밋 커밋

이 어떤 사람

지금은 커밋 삭제할 필요가 // C 커밋 B는 커밋 C를 남겨 둡니다. 도움이 될 것입니다.

+0

[가능한 방법은 github에서 커밋을 제거 할 수 있습니까?] (http://stackoverflow.com/questions/448919/how-can-i-remove-a-commit-on-github) –

답변

3

이러한 커밋은 revert입니다.

기술적으로는 변경 사항을 제거하고 새로운 커밋을 수행하고이를 취소하는 것입니다.

이제 되돌리기로 변경하면 기록에 남게되지만 일반적으로 괜찮습니다. 그게 완전히 받아 들일 수없는 경우에만 필터 분기와 강제 푸시 같은 솔루션을 봐.

4
git reset --hard HEAD~1 

여기서 HEAD ~ 1은 헤드보다 커밋을 의미합니다.

이 대안은이 작업을 수행 한 다음 (자식 로그의 출력을보고) 원하는 커밋, 그리고 ID 커밋 찾기 :

git reset --hard <sha1-commit-id> 
+0

) C를 건너 뛰고 OP가 원하는 것의 반대 인 A와 B를 남겨두고 b) 로컬 상태에만 영향을 미치고 별도의 수정 커밋이 여전히 필요합니다. – eis

0
git rebase --onto master~3 master~1 master 

당신은 명령 git help rebase에 의해 도움을 볼 수 있습니다, 그리고 - 옵션을 사용하거나 here이라고 표시됩니다. doc에는 상황에 따라 예제가 있습니다.

관련 문제