2016-09-27 11 views
1

이 커밋 다음의 역사를 고려 커밋 제거 :는 완전히 이전

* 627f412 (HEAD -> master) final commit 
* 1425cf8 added some file 
* 2c8bb78 initial commit 

저장소는 둘 다 밀어하지 이러한 커밋 동안 뽑아되지 않습니다.

두 번째 커밋 1425cf8은 불필요한 커밋입니다. 그리고 저 커밋을 완전히 제거하고 싶습니다.

* 627f412 (HEAD -> master) final commit 
* 2c8bb78 initial commit 

가 어떻게 그것을 달성 않습니다

그래서, 새 로그는 다음과 같다 것인가?

git reset --hard HEAD~1이 상황에서 올바른 것이 있습니까?

답변

2

Is git reset --hard HEAD~1 the correct thing to do in this situation?

아니오 : git rebase -i 2c8bb78입니다.

대화식 rebase 세션에서 추가 커밋을 삭제할 수 있습니다. (1425cf8에서 소개 한 것을 완전히 삭제하려면)
또는 두 커밋을 스쿼시 할 수 있습니다. 이를 위해

, 대화 형 세션 ("Git Tools - Rewriting History"참조) :

  • 는 최종 결과가 627f412하지 것 627f412

주 앞에 스쿼시에 대한 s을 추가 : 새로운 커밋은 그 내용이 다를 것이기 때문에 다른 SHA1을 가질 것이다.

+0

VonC 다음은'git rebase -i 2c8bb78' 때 일어나는 일입니다. 편집기 창이 열립니다. 다음과 같습니다 : pick 1425cf8 일부 파일을 추가했습니다. 선택 627f412 최종 커밋 첫 줄을 삭제했습니다. 파일을 저장했습니다. 결과는 다음과 같습니다. 오류 : 적용 할 수 없습니다. 627f412 ... 최종 커밋 잘못된 것이 있습니까? 나는 원래 상태로 되돌아 가야한다. – deshmukh

+0

https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History : 1425cf8 변경 사항을 삭제하겠습니까, 또는 그들을 627f412로 스쿼시 해? – VonC

+0

VonC 중 하나입니다. 해서는 안되는 커밋입니다. 게다가, 627f412 커밋은 내가 원한 것이며, 어쨌든 1425cf8의 일부였던 모든 것을 포함합니다. – deshmukh

0

HEAD를 2c8bb78으로 재설정하고 (변경없이 --hard없이!) 변경 사항을 적용 할 수 있습니다. 또는 2c8bb78에서 리베이스하고 두 개의 다른 커밋 (627f4121425cf8)으로 스쿼시합니다.

reset --hard을 사용하면 수정 사항을 잃을 수 있습니다.

+0

user4780495 나는 흔들린 땅에있는 것 같다. @ VonC의 VonC의 대답에 대한 내 의견을 참조하십시오. 일을 더 간단하게하기 위해 답을 자세히 설명해 주시겠습니까? – deshmukh