데브코스 최종 프로젝트를 진행하던 중 작성하던 코드가 1차적으로 마무리되어 Github에 올리기 위해 새로운 Branch를 생성하고, 그곳에 코드를 저장하려고 하였다. 그런데 add -> commit -> push를 진행했지만, 생성한 Branch는 초기 상태 그대로였고 main Branch에 push가 되었다.. (main Branch도 초기 상태였기에 내가 첫 push를 진행한 것) 다른 팀원 분들에게 피해가 가지 않도록 신속하게 찾아보고 수정하였다.
push 되돌리기와 Branch 전환 방법
설명할 명령어에 대해 간단하게 알아보자.
- git reset : commit 취소, 워킹 디렉터리 되돌리기
- git checkout : 새 Branch를 생성하고, 다른 Branch로 전환할 수 있는 명령어
push 되돌리기
진행했던 push를 되돌리려면 git reset 명령어를 사용해서 진행한다. add/commit/push 모두 취소가 가능하며, 자세한 내용을 확인하고 싶다면, 아래의 링크를 확인하면 된다. 이 글에서는 push를 되돌리는 방법만 설명하려고 한다!
push 되돌리기
아래의 명령어로 해당 Commit Id의 위치로 돌아가고, 워킹 디렉터리도 Commit Id 시기의 상태로 돌아간다. 나는 아예 실수로 push를 한 것이기 때문에 이 방법으로 push를 되돌렸다. 그러나 이전에 다른 사람이 git pull을 사용했다면, 충돌이 발생할 수 있으니 신중히 사용해야 한다고 한다.
git reset --hard {Commit id}
실제 적용
설명을 위해 이미지를 추가하였지만, main Branch라고 생각하고 보면 된다. (현재는 merge_tables Branch) 여기서 진행해야 할 것은 실수로 진행한 25일에 진행된 commit, push를 제거하는 것이다.
push를 되돌린 과정은 다음과 같다.
- git log를 사용해 돌아갈 commit 위치 파악
- 15일에 진행했던 commit으로 돌아가야 함
- 해당 Commit Id (하얀색으로 처리한 부분)을 복사하여 다음 과정에 사용
- push를 되돌리는 명령어 사용
- 15일의 Commit Id를 입력 및 그 이후의 변경 사항은 모두 삭제
git reset --hard a232987662feec7ef4...
Branch 전환 방법
이 실수가 발생한 것은 Branch를 전환하지 않고, main Branch에서 작업을 해서 그런 것이다. 그러면 어떻게 Branch를 변경하여 작업할 수 있는지 알아보자.
Branch 전환 방법
git checkout과 함께 branch_name을 입력하면, 입력한 branch로 이동이 가능하다. 추가로 이전 Branch로 이동하려면 이름 대신 -를 입력하면 된다.
git checkout {branch_name}
실제 적용
내가 생성했던 merge_tables라는 Branch로 이동하기 위해 아래 명령어를 사용하였고, 올바르게 이동된 것을 확인할 수 있다.
git checkout merge_tables
Reference
https://subji.github.io/posts/2020/07/06/gitrevertresetandturnbackcheckout
https://www.freecodecamp.org/korean/news/git-switch-branch/
https://hidaehyunlee.gitbook.io/fork-my-brain/git/git-add-commit-push