design 브랜치에 커밋 해야하는데 브랜치 이동하는 거 까먹고 main 브랜치에 커밋해버렸다.
어차피 혼자 쓰는 리포지토리인데 그냥 무시할까 하다가 나중에 다른 사람이랑 같이 쓰는 리포지토리에 실수하는 불상사를 위해 수정했다.
1. 지우고 싶은 커밋 확인하기
2. 최신 커밋 취소하기
git reset HEAD^ // 꺽쇠의 개수에 따라 최근 기준으로 커밋 취소
git status으로 확인해보면 Staging 상태가 커밋 전으로 다시 돌아왔다.
특정 커밋을 선택해서 취소할 수도 있다. (난 사용 안했는데 쓸 날이 꼭 올 거 같아서 미리 적어둔다)
git reset [--옵션] [취소할 커밋의 해시]
3. 원하는 브랜치로 이동해서 다시 커밋해야지! 했는데 안된다.
브랜치 바꾸기 전에 변경사항을 커밋하던가 stash 하란다.
4. Staging에 있는 파일의 변경사항을 스택에 넣어 둔다.
취소했던 커밋 전의 커밋에 HEAD 포인터가 가 있다.
이때 main 브랜치에 잘못 올라갔던 커밋 기록이 삭제됐다. (삭제 전 상태 캡쳐 못함 T_T)
5. 원하는 브랜치로 이동한다
오예 switch 성공
6. design 브랜치에서 작업했던 내용이 Staging 영역에 있다.
7. 이제 제대로 커밋하고 푸시
8. main 브랜치와 design 브랜치 병합 후 푸시
끝!!
각자 목적을 가진 브랜치에서 푸시하고, 특정 작업이 완료되면 main 브랜치와 병합해주는데 이게 맞나 의문이 든다.
브랜치는 커밋의 목적을 나눠주는 애가 아니라 버전 관리를 위한 아이였다..
자세한 글은 아래에 👇🏼
🔗 [Git] branch에 대한 나의 착각 (feat. 커밋 컨벤션)