협업 프로젝트 중 별 다를 것 없이 커밋푸시를 진행했다. 그런데 머지오류가 났다. 프로젝트를 삭제하고 다시 마스터브렌치에서 클론을 해왔으나 이미 오류난 상태가 마지막으로 푸시되어있어서 내가 오류가 나기 전의 커밋으로 되돌리는 수 밖에 없었다. 다른사람이 푸시를 하려 하면 풀을 한 뒤에 해야하기 때문에 다른 사람의 프로젝트에도 내 오류가 추가되기 때문에 무한반복이 되는 현상이 일어났다.
그래서 나는 머지오류를 먼저 해결하려 했으나 쉽게 잡히지 않았고 그냥 푸시를 취소하는게 가장 낫다고 판단하여 푸시 취소하는 방법을 구글링하여 성공하였다. (무려 두시간만에...)
이제 내가 성공한 방법과 헷갈릴만한 것들을 정리하겠다.
먼저 git reset [커밋 아이디]
를 cmd나 git bash에 입력한다.
reset
과 revert
의 차이나 혼자 프로젝트 중이라면 reset
을 쓰고
협업 중이라면 revert
를 쓴다.
협업 중에 reset
을 써도 상관없으나 팀원들과 상의하여 사용하는것을 추천한다. 왜냐하면 팀원들이 개발하던 중 커밋이 삭제되어 버릴 수 있어 파일이 뒤섞이기 때문이다. (나는 팀원들이 내가 푸시한 이후 개발하고 있지 않아서 reset
을 사용했다.)
깃허브에서 복사해오는 방법과 cmd에서
git log --oneline
이라고 쳐서 아이디를 복붙해오는 방법이 있다.
커밋아이디를 고를 때 가장 중요한 것이 있다. 나는 이걸 헷갈려서 수차례 헤메었다.
⭐ 내가 삭제하고자 하는 커밋의 아이디가 아니라 그 이전의 커밋아이디를 불러오는 것이다. ⭐
왜냐하면 git reset [commit ID]
를 작성하면 [commit ID]
이후의 커밋들만 삭제한다.
삭제를 했으면 커밋을 해야한다.
다음 마지막으로 푸시를 해주면 끝난다.
푸시를 할 때는 일반적으로 푸시하는게 아니라 강제 푸시를 해주어야한다.
-f
가 force의 약자이다.
이렇게 보인다면 성공이다.
깃허브로 가서 확인해보면 푸시했던 커밋이 사라진 것을 볼 수 있다.
참고한 링크 >> https://jammdev.tistory.com/35