급하게 수정 코드를 팀 공유 된 github 계정으로 commit을 해야할 일이 생겨, 평소에 작업하던 컴퓨터가 아닌 개인 컴퓨터에서 commit을 진행하였다.
하.. 그런데,, global 계정이 나의 개인 github 계정인지 모르고 commit에 push까지 원격에 해버리는 실수를 범했다....
난감했다. 일단 급하게 한다고 확인하지 않은 나의 습관에 반성을 합니다..
그래도 다행히 방법을 찾아보니 원격 저장소의 상태를 특정 push 시점으로 변경하는 방법이 있었다! 감사합니다!! 그 내용을 기록하고 공유하고자 합니다.
많은 부족한 점이 있으니, 피드백은 언제든지 환영입니다.
01. 문제의 상황
문제의 상황을 간단히 정리하자면, 아래와 같다.
1. 원격 저장소에 코드 변경 내용을 push (생각도없이....)
2. 원격 저장소의 push 계정이 개인 계정임을 확인 (가능했던건, git token을 기존 author의 token으로 입력해서 가능했던 것 같다..?)
3. 잘못됨을 확인하고,, git 원격 저장소의 push 취소하기
02. Github 원격 push 취소하기
딱 3단계를 거치면된다.
1. 잘못된 commit 이력 찾기
git log --oneline
최근까지 commit해던 모든 이력을 확인이 가능하다!
1932901 commit 내용
50c45c2 commit 내용
3c9f431 commit 내용
1fce73a commit 내용
468f1c5 commit 내용
b6b8e5d commit 내용
302490a commit 내용
73dcacd commit 내용
7bf52f8 commit 내용
f2625bc commit 내용
...
위에서 부터 가장 최신에 커밋한 내용이다. 본인이 잘 안다면 언제 잘못한지를 찾아서 해당 commit ID를 확인한다.
2. 돌아가고 싶은 시점의 commit 선택하여 이후의 commit 삭제하기 (돌아가라 시간아)
git reset --hard "해당 commit ID"
"--hard" 옵션은 돌아가고 싶은 시점의 commit 이후에 모두 지우는 옵션이다.
반면에 과거 특정 이력만 지우고 싶다면 "--soft" 옵션을 사용하면 된다.
본론으로 돌아와, 이렇게되면 돌아가고 싶은 시점으로 돌아오고 이후에 commit은 지워진다. 그 시점으로 돌아왔다고 보면 되겠다.
3. github 원격 저장소에 반영하기
git push origin master(자기 브랜치이름)
이러면 완전히 그 시점으로 돌아오게 됩니다. 만약 안될 경우 "-f" 옵션을 사용하면 될 수도 있습니다..
하지만 "-f" 옵션의 사용은 항상 유의하시길..
여튼 살았습니다.. 저처럼 바보같은 행동하지 마시길.. 반성하자..