Git/with Remote
원격 저장소에 올라간 커밋 제거
by BAYABA
2021. 10. 10.
- 개인 공부 목적으로 작성한 글입니다.
- 아래 출처를 참고하여 작성하였습니다.
목차
- Intro
- 로컬에서 되돌리고 싶은 커밋으로 이동하기
- 원격 저장소에 강제로 push
- 주의사항
1. Intro
- 원격 저장소에 올라간 커밋을 제거(되돌리기)하는 방법에 대해 알아보겠습니다.
- 이미 원격저장소(깃허브)로 push 해버린 경우에는 로컬에서 커밋을 되돌린 후에 강제로 push를 해야합니다.
2. 로컬에서 되돌리고 싶은 커밋으로 이동하기
- 우선 로컬에서 되돌리고 싶은 커밋으로 가기 위해 아래와 같은 명령어를 입력해줍니다.
$ git reset --hard HEAD^ # case1. 바로 이전 커밋으로 돌아감
$ git reset --hard HEAD~n # case2. 위에서부터 n만큼 아래의 커밋으로 돌아감 (n대신에 숫자 넣기)
3. 원격 저장소에 강제로 push
- 그 다음, 아래의 명령어를 입력해 원격저장소에 강제로 push합니다.
$ git push -f origin master
4. 주의사항
- 이 방법을 이용하면 원격 저장소에 흔적도 없이 제가 만들었던 커밋들을 제거할 수 있습니다.
- 하지만 해당 브랜치가 팀원들과 공유하는 브랜치이고, 제가 커밋을 되돌리기 전에 다른 팀원이 제가 작성한 커밋들을 이미 pull로 땡겨갔다면, 그때부터 다른 팀원의 로컬 저장소에는 제가 되돌린(없애버린) 커밋들이 남아있게 됩니다.
- 저로 인해 그 커밋들이 되돌려진 사실을 모르는 팀원은 자신이 작업한 커밋들과 함께 push할 것이고, 그 때 제가 되돌렸던 커밋들이 다시 원격 저장소에 추가되게 됩니다.
- 따라서 이 방법은 다른 팀원이 제가 되돌린 커밋을 pull 하지 않았다고 확신할 수 있는 경우에만 사용해야 합니다.
- 나 혼자만 사용하는 브랜치에 커밋을 push하였고, 이를 되돌리고 싶은 경우
- 팀원들과 직접 커뮤니케이션해서 내가 되돌린 커밋을 pull로 땡겨간 팀원이 없다고 확인된 경우
- 위와 같은 경우에는 안전하고 간편하게 사용할 수 있는 방법입니다.
출처
- [Git] 깃 원격저장소(깃허브)에 올라간 커밋 제거(되돌리기)
- GitHub 원격저장소 히스토리 삭제하기