Gallery
기본 보기
Calendar
Search
git을 사용하다보면 예상하지 못한 문제를 마주하는 일이 꽤나 빈번하다. 그 중에서도 이전 커밋으로 되돌아가고 싶은, 혹은 꼭 그래야하는 상황도 많이 마주치게 된다. 이때 git reset이나 revert 명령어를 사용하여 커밋을 되돌릴 수 있다. 최근에 새로 들어온 캠퍼들의 질문으로 git revert를 다시 돌아보게 되었는데 내가 revert 명령어를 거의 써본 적이 없다는 것을 인지하게 되었다. 나는 그 동안 일말의 conflict도 겪고싶지 않은 마음에 위험을 감수하면서도 reset을 사용해왔다. (물론 push도 force push로 진행해왔다. 반성한다.) 물론 이러한 선택은 revert에 대한 이해가 부족했기 때문이기도 하다. git과 어느정도 친해졌다고 생각했는데.. 내 착각이었다.
reset과 revert는 모두 커밋을 이전으로 되돌리는 명령어이다. 어떻게 다를까? reset은 커밋 내역을 남겨두지 않고 모두 삭제하며 이전으로 돌아가는 것이고, revert는 커밋 내역을 삭제하지 않은 채 이전으로 돌아가는 것이다. 아주 쉽게 예를 들어보자. 우리는 2021년에 비트코인 가격이 8천만 원을 넘어간다는 사실을 알고 있다. 아마 당시 차트를 보며 "타임머신을 타고 과거로 돌아갈 수 있다면.." 하며 행복한 상상을 해본 사람이 나뿐만은 아닐 거다. 지금이라도 시간을 돌릴 수 있다면 비트코인을 싸게 살 수 있을 때로 돌아가지 않을까 싶다. 좋다. 지금부터 과거로 돌아갈 수 있다는 행복한 상상을 해보자! 이때 당신은 reset으로 돌아갈 것인가? revert로 돌아갈 것인가?
reset으로 돌아가면 돌아간 시점 ~ 현재(돌아가기 전)까지의 기억(commit)을 모두 삭제해버리는 것이다. 그냥 과거로 돌아가서 그 시점부터 다시 인생을 사는 것이다. 물론 reset 명령어도 종류가 몇 가지 있어서 조건이 다를 수는 있지만 말이다. revert로 돌아가는 것이 아마 현명한 선택이다! revert로 돌아가게 되면 모든 기억(commit)을 그대로 가지고 과거로 돌아갈 수 있다. 다만 돌아간 시점과 남아있는 나의 기억들 사이에서 일어나는 충돌(conflict)은 감수해야 할 것이다. 억만장자가 될 수 있는데 그 정도 충돌쯤이야. 이제 다시 현실로 돌아오자. 아래에서는 reset과 revert에 대해 좀 더 자세하게 이해해보도록 하겠다.
Untitled
Untitled
reset 명령어는 커밋 내역을 삭제하면서 이전의 커밋으로 돌아가는 명령어이다. 위의 그림처럼 commit
에서 commit
로 돌아간다면 commit
과
는 삭제되는 것이다.
원하는대로 이전 커밋으로 돌아갔고, commit 기록도 깔끔해져서 문제가 없어보이기도 하지만 reset 명령어로 돌아가는 과정에서 삭제된 커밋은 복구할 수 없다는 치명적인 단점이 존재한다. 따라서 reset을 해주기 전에는 각별히 신중할 필요가 있다. 협업이나 중요한 프로젝트라면 더욱더! reset 명령어에도 몇 가지 옵션이 있다. 어떤 옵션으로 reset을 시키냐에 따라 다른 결과를 얻을 수 있다. 하나씩 살펴보도록 하자. 좀 더 완전한 이해를 하고 싶다면 글을 보며 직접 여러 실험을 진행해보는 것이 좋겠다.
Working Directory는 현재 작업 중인, 작업한 파일의 내용을 의미하고 Staging Area는 git add 명령어로 commit의 관리 대상으로 올라간 상태를 말한다. 더 이해가 필요하다면 git book 문서를 읽어보는 것도 추천한다.
[기술노트] git reset, revert
2021/10/05
git
reset
revert
야곰 아카데미 커리어 스타터 캠프 1기 수료생 Jake의 글입니다
시작하기 전
먼저 나에 대해서 간단히 소개하자면 서울에 있는 대학의 컴퓨터공학과를 나온 Jake이다. 4년 동안 학교를 다니면서 다양한 언어들과 CS 지식들을 얕다면 얕게, 깊다면 깊게 공부했었다. 그러다 중간에 휴학을 하고 배웠던 내용들을 복습하던 도중에 iOS 개발에 관심을 가지게 되었다. iPhone을 오랜 기간 동안 사용 하기도 했었고 iOS 앱만의 갬성(?)과 디자인이 이쁘기도 하고 무엇보다 iOS 개발의 가장 큰 진입 장벽인 맥북이 이미 있었기 때문에 iOS 앱개발 공부를 시작하게 되었다.
처음에는 네이버 부스트코스에 무료 강의인 iOS 프로그래밍을 위한 스위프트 기초, iOS 앱 프로그래밍을 보면서 공부를 진행했지만, 학교 다닐 때 과제를 하던 버릇 때문인지 Swift 언어에 대한 정확한 이해를 하기보다는, 바로 코드부터 작성해서 동작하면 넘어가는 습관 그리고 빠르게 진도를 나가려고 해서 그런지 혼자서 공부를 하는데에는 어려움이 많았다.
그러다가 2020년 11월부터 야곰 아카데미에서 iOS 스타터 캠프가 열린다는 것을 알게 되었고, 강의로만 보던 야곰한테 배울 수 있는 좋은 기회라고 생각해서 지원하게 되었다. 캠프 참가에 지원 후 간단한 과제와 면담을 진행하고 캠프에 합류하게 된다.
야곰 iOS 스타터 캠프 선택 이유
다른 캠프와의 차별성 - 현실적인 조언
사실 컴퓨터 공학과 학생으로서 주변에 이미 취업한 선배들로부터 회사의 얘기를 들어보면 학원에서 배우고 오는, 즉 학원 출신 개발자들을 별로 좋아하지 않는다는 말이 있다. 학원, 그리고 학원에서 공부하신 개발자 분들에 대해서 내가 비판이나 비난의 목적으로 이러한 말을 하는 것은 아니다. 또한 내가 직접 해당 학원에서 배워보지 않았고, 거기서 배우신 분들이 얼마 만큼의 노력을 했는지를 전혀 모르기 때문에 그들의 능력에 대해서 말하기는 어렵다고 생각한다.
그러나 몇몇 부트캠프 혹은 학원들의 커리큘럼을 보았을 때, 정말 많은 것을 단기간안에 알려주고 해당 과정을 마치면 취업을 할 수 있다라는 확신을 주는 것처럼 광고를 하는 학원들이 많았다. 이는 전공자인 내가 생각했을 때는 아무리 핵심만 가르치고, 수업을 듣는 사람이 열심히 따라온다고 해도 너무나 방대한 양이기에 불가능하지 않을까라는 생각이 먼저 들게 된다.
그러나 야곰 캠프에서는 실제 캠프 기간(6개월) 내에 할 수 있는 양을 준비하고 진행한다고 했고 실제로도 그렇게 진행하였다. 또한 사전 OT때 해당 캠프가 끝난 뒤에 취업이 가능하냐는 질문에 대한 답에도 무조건 할 수 있다는 대답 대신 "현실적으로 못할 가능성이 크다. 이후에 공부할 시간이 더 필요할 것이다." 라는 답을 해준 것이 마음에 들었다.
다들 적지 않은 돈과 열정, 그리고 자신들의 시간을 투자할 생각을 가지고 부트캠프나 학원을 찾아올텐데, 캠퍼(학원생)들을 무조건 등록시키려고 하는 것이 아니라 정말 iOS에 대해서 관심이 있고 이쪽 분야로 나가고 싶은 사람들에게 앞으로 스스로 공부할 수 있는 방법을 알려주고, 혼자라면 많이 하게 될 삽질의 양과 시간을 조금이나마 줄여주고자 하는 야곰의 뜻을 면담, OT 그리고 캠프 내내 알 수 있었다.
교육 방식 - Flipped Learning
야곰 아카데미 iOS 스타터 캠프 후기
2021/06/16
야곰
야곰아카데미
스타터캠프
iOS
iOS개발
iOS교육
앱개발
후기
회고
부트캠프
Swift
스위프트