개발일지/TIL

[TIL] 2109014 오늘 공부는 git revert

햄❤️ 2021. 9. 14. 23:24
728x90

리액트 렌더링에 대해서 너무 잘 모르고 있다는 생각이 들었다. 덕지덕지 코드를 한 두줄의 코드로 정리할 수 있음을 알고 진짜 놀라는 중... 내가 논리력이 부족한가.. 고등학교때 명제를 잘 못했나? 생각이 들어서 동료 개발자분한테 리액트 어떻게 공부했냐고 했더니 삽질이 답이라고 하셨고, 빨리 느는 방법은 없다고 했다. 인강 듣고 이런 것 보다는 회사에서 일하다가 모르는 부분을 계속 찾아보고, 그 부분에 대해서 공부하는게 효율적이라고 했다. 

끙... 기존의 것을 수정하기보다는 구조가 이상하면 구조를 바꿀 줄 알고, state값이 필요하면 추가해서 처리하는 능력이 필요하다. 더 많은 삽질이 필요한 순간.

 

커밋했던 것을 되돌리고 싶었다. 되돌려서 staging area로 내려서 쓸데없는건 버리고  필요한 것만 올리고 싶었다. 소스트리로 하지말고 커맨드로 하고 싶었다. 커맨드... 커맨드 정말 익숙해지고 싶다....

 

이미 내 원격에 push한 커밋을 되돌리고 싶을때 사용하는 것은 git revert! 

revert를 사용할 수 있는 경우라고 한다. 만약 같이 쓰는 브랜치에서 커밋을 되돌렸는데 그 전에 pull 받아간 팀원이 있다면 되돌린 커밋이 살아난다고 한다. 나는 내 브랜치에만 push 했기 때문에 revert를 사용해도 되는 것 같았다. (다..행)

  • 나 혼자만 사용하는 브랜치에 커밋을 push하였고, 이를 되돌리고 싶은 경우
  • 팀원들과 직접 커뮤니케이션해서 내가 되돌린 커밋을 pull로 땡겨간 팀원이 없다고 확인된 경우

git log를 통해 커밋 상황을 확인할 수 있다. 

Revert는 가장 최신의 커밋부터 되돌린다. a,b,c를 시간순서대로 커밋했다면 되돌려지는 순서는 c,b,a

revert는 취소 커밋을 생성한다. 

 

나는 1개만 지울꺼라 git revert HEAD~1 을 사용했다. 만약 3개의 연달은 커밋을 지우고 싶으면 ~3을 써주면 된다.

 

revert의 세 가지 방식이 있었다. 이게 좀 어려웠다. 아직도 어려움. 사수님이 mixed로 하라고 하셔서 하긴 했는데 왜 mixed일지 궁금했다ㅠㅠ

아래 세가지 방식을 공부 해 봤는데 hard로 했으면 아마 울뻔했을 것 같다. 

근데 공부하다보니 reset하고 revert랑 헷갈린다. 이 부분도 좀 더 공부해야할 것 같다.

revert는 revert 했다는 이력을 남겨주지만 특정 사건을 골라 없었던 일로 처리해준다. reset은 과거로 돌아가는데 그 이후의 사건들이 모두 사라진다. 

 

hard = 보존X 

 레포지토리, staging area, working directory의 모든 내용을 지정한 버전으로 리셋한다. 최근 작업 내용을 전부 버리고 최신 버전 상태로 초기화 시킬때 쓴다. (걍 엎을때) 

 

soft = 모두 보존

레포지토리만 지정한 버전으로 리셋한다. 지정한 버전에서 다음 버전으로 커밋하기 직전 상태

즉 staging area, working directory의 작업은 남겨둔다. (add 한 상태, staged 상태) 

index를 보존한다.

 

mixed = working directory 보존

default값으로 레포지토리, staging area의 내용(add하기 전 상태 = unstaged)을 지정한 버전으로 리셋한다. 작업한 내용을 다시 수정해서 커밋하기 좋다.

index 취소 

즉 현재 작업물을 지우지는 않는다.  HEAD와 branch 이동 + 해당 파일을 unstaged로 만들어서 이전 커밋으로 돌아가게 된다. working directory에 보관할 수 있으니 안전하다.

 

728x90