git

git commit, merge를 잘못했을때 수정하는 방법

흰색텀블러 2024. 7. 23. 09:33

문제상황

- 최근, 팀 프로젝트를 하면서 실수로 main에 commit을 해버렸다.. (merged Pull Request가 이미 되어버린 상황)

- 팀원과 나 둘다 비상상태.. 둘다 수정할 방법을 몰라..!! 약 4시간동안 뒤적뒤적하면서 오류를 해결했다...

- 수정은 IDE인 인텔리제이에서  열심히 수정을 했다...

 

해결과정

1. 일단.. 인텔리제이 기준, 터미널을 열어서 git log 입력하여 지금까지 적용한 commit, push를 확인한다.

 

2. 일단 읽어본 후, git reflog를 검색하면 좀 더 깔끔하게 나오는 것을 알수 있다.

+ log를 검색 후에 reflog를 다시 검색해 보는 것을 추천하는데, reflog는 너무 간단하게 나오기 때문에, 이해가 어려울 수 있다.

 

3. git reflog를 보면 이제 내가 실수한 부분, 즉 되돌리고자 하는 부분에 대한 해시코드(숫자와 문자로 길게 적혀있다.)를 복사를 한다. - 귀찮더라도 마우스로 복사를 하자... 키보드로 Ctrl + C 누르면 터미널별 ^C가 입력되서 안될 경우도 있다..

 

4. 이제 git revert "복사한 해시코드"를 입력한다 (" "는 입력 하지 않는다.) 하면 뭔가 길게 우르르르 작성이 되어 나올것이다. 그렇다면 성공이다. (On branch ~~~ 라고 시작하는 공지글?이 나올텐데, 그 이유는 이미 commit되어있는것 보다 이전의 commit을 선택했기 때문에 뜨는 안내문이다. 우리는 지금 되돌리는 걸 하고 있기 때문에 잘 나온것이다. 걱정은 하지 말자.)

 

5. 이제. git push를 하자.... 단, 이때 github에서 force를 막아놓진 않았는지(강제로 push 하는것을 방지해놓지는 않았는지) 확인을 하고 진행을 하자.

 

6. 해결!!

 

후기

- 정말... commit을 하기전에 반드시 생각을 100번은 하고 눌러야한다...

- github에 main(master) branch에 push할수 없도록 반드시 설정을 해놓아야겠다...

- git 공부를 좀 더 많이 하자..

- 팀원분들 저때문에 정말 고생이 많았습니다...  ㅠㅠ

- 물론 revert 대신 reset 방법도 있긴한데, reset은 싹다 삭제해버리는 경우도 있다고 해서 사용하지 않았다. 기왕이면 되돌리는 revert를 사용해서 해결하는 방식으로 해보자!!