Git에서 특정 커밋만 삭제할 수 있나요?

안녕하세요. 이전 커밋 중에서 하나만 선택해서 삭제하고 싶습니다. 단순히 최신 커밋을 되돌리는 게 아니라, 중간에 있는 특정 커밋을 제거하려면 어떻게 해야 하나요?

2개의 답변이 있어요!

  • Git에서 특정 커밋을 삭제하는 방법은 있어요.

    'git rebase -i' 명령어를 사용하면 되는데,

    이 명령어로 원하는 커밋을 선택하고 'drop'으로 표시하면 삭제할 수 있어요.

    주의할 점은, 삭제한 커밋은 복구하기 어렵기 때문에,

    중요한 작업이 있다면 미리 백업을 해두는 게 좋아요.

    이렇게 하면 중간에 있는 커밋도 손쉽게 삭제할 수 있어요.

  • 깃에서 중간커밋삭제가 좀 까다로운 작업이지요.

    git rebase -i명령어 쓰시면 커밋히스토리를 수정할수가 있답니다.

    예를 들어 HEAD~3이라고 하면 최근 3개의 커밋을 보여주는데 거기서 삭제하고 싶은 커밋 앞에 drop이라고 표시하면 되지요

    근데 이렇게 하면 그 이후의 커밋들이 다 영향을 받아서 충돌이 날 수도 있어요..

    git rebase -i HEAD~3 이렇게 입력하시고 편집기가 뜨면

    삭제하고 싶은 커밋 앞에 있는 pick을 drop으로 바꾸시면 됩니다

    이렇게 하고 저장하시면 Git이 자동으로 커밋 히스토리를 다시 정리해주는데

    중간 커밋을 지우다보니 나중 커밋들이랑 충돌이 날 수 있으니 조심하셔야해요

    만약 다른 사람이랑 같이 작업하는 브랜치라면 더더욱 신중하게 하셔야 하는데

    이미 push한 커밋을 수정하면 다른 사람들한테도 영향이 가거든요ㅠㅠ

    그래서 혼자 작업하는 브랜치가 아니라면 git revert를 쓰는게 더 안전할 수도 있답니다

    git revert는 커밋을 실제로 지우는게 아니라

    그 커밋의 변경사항을 취소하는 새로운 커밋을 만드는 거라서 히스토리가 꼬일 일이 없지요

    이렇게 하면 다른 사람들의 작업에도 영향을 안주고 깔끔하게 처리할 수 있어요,,