개발관련/Git

Git의 브랜치에서 커밋 삭제하는 방법

Rateye 2021. 12. 16. 09:53
728x90
반응형
질문 : Git의 브랜치에서 커밋 삭제

커밋을 삭제하는 방법을 알고 싶습니다.

delete 라는 말은 내가 그 커밋을하지 않은 것 같고, 나중에 푸시를 할 때 변경 사항이 원격 브랜치로 푸시되지 않는다는 것을 의미합니다.

나는 git help를 읽었으며 사용해야 할 명령은 git reset --hard HEAD 입니다. 이 올바른지?

답변

주의 : git reset --hard 작업 디렉토리 변경을 삭제 합니다. 이 명령을 실행하기 전에 유지하려는 로컬 변경 사항 을 숨기십시오.

당신이 그 커밋에 앉아 있다고 가정하면이 명령은 그것을 깨울 것입니다 ...

git reset --hard HEAD~1

HEAD~1 은 헤드 전에 커밋을 의미합니다.

git log 의 출력을보고 백업 할 커밋의 커밋 ID를 찾은 다음 다음을 수행 할 수 있습니다.

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

이미 밀었다면 제거하기 위해 강제 밀기를해야합니다 ...

git push origin HEAD --force

그러나 다른 사람이 가져 왔을 수 있다면 새 분기를 시작하는 것이 좋습니다. 왜냐하면 그들이 당길 때 그것은 단지 그들의 작업에 병합 될 것이고 당신은 그것을 다시 밀어 올릴 것입니다.

git revert 를 사용하여 변경 사항을 취소하는 "미러 이미지"커밋을 만드는 것이 더 나을 수 있습니다. 그러나 두 커밋 모두 로그에 기록됩니다.

참고로 git reset --hard HEAD 는 WORK IN PROGRESS를 없애고 싶다면 좋습니다. 가장 최근 커밋으로 다시 설정하고 작업 트리 및 인덱스의 모든 변경 사항을 지 웁니다.

마지막으로, "삭제"한 커밋을 찾아야하는 경우 저장소를 가비지 수집하지 않는 한 git reflog

출처 : https://stackoverflow.com/questions/1338728/delete-commits-from-a-branch-in-git
728x90
반응형