2016년 6월 16일 목요일

Git 시작하기 4 - reset

목차

git reset 명령어

저번에는 git commit으로 백업을 진행시켰다
(무려 1년도 넘은 저번편이지만..)
백업을 하는 이유 중 하나는
바로 되돌리기를 위해서이다

그 되돌리기를 하는 명령어가 바로 reset 이다
명령어부터 대놓고 쉽다

이걸로 끝이면 좋겠지만 불행해도 쪼끔 더 복잡하다
reset은 3가지 영역으로 나뉜다
앞서 시작하기 3에서 3가지 영역이란걸 잠시 봤던적이 있을것이다

일반인-> 오디션 -> 연예인
작업디렉토리 -> stage area(index) -> Head (committed)

이런거

reset은 애가 섬세해서 단번에 연예인->일반인으로 끝나는게 아니라
연예인->안연예인.. 오디션합격->불합격.. 일반인->백수
이딴식으로 작동한다.
우리는 빠른 고수가 되기위해서 마공을 수련했기에 지금와서
저런걸보면 주화입마에 걸릴뿐이다
어차피 우리한테 필요한것은 백업했던것을 되돌리는 것

저런거 다 집어치우고
reset --hard
만 알면 된다.
좀더 자세히 쓰자면
git reset --hard HEAD~1
이것이 바로 이전의 백업본으로 돌아가는 명령어다
참고로 대소문자는 관계없다

만약 저명령어의 마지막 부분을 head~2 로 변경하면 어떻게 될까?
이전 이전의 백업본으로 바꾼다.
즉 저 숫자가 몇번 뒤로 가는가를 나타낸다
하지만 왠만한 범재들은 자신이 얼마나 뒤로 돌아가야할지
기억하고 있지 않다.

여기서 그동안 commit 하면서 써온 메세지들이 빛을 발한다
git 시작하기
세월이 흘러 이제 git bash에서 한글 지원 잘되는듯

git log를 치면 지금까지 커밋한 것들이 주루루 나오는데
메세지에 써넣은 것도 나온다
보통 메세지에는 ‘뭐뭐를 변경했음’ 이런식으로 써놓아서
어느 버전에 어떤 변경점이 있는지를 알게 해놓는게 정석이다

그것을 보고 뒤로 돌아가면되는데
위에 보면
commit 3abced8a8~~~생략~
이런식으로 노란색으로 요상한 영어랑 숫자가 쓰인 것을 볼 수 있을 것이다
이것들은 각 백업본의 식별자로써 4-5자만 치면 정확하게 그 버전으로
복귀할 수 있다
예를들면 second 버전으로 돌아가고 싶다.. 이럴때
git reset --hard 8a26f
요렇게만 치면 바로 된다

정리하면 한두번 이전으로 가고 싶을땐
head~숫자 (참고로 바로이전에만 가고 싶은땐 head^ 라고해도 된다)
정확하게 가고 싶을땐 로그 참고해서 id 4-5자만 쳐주면 된다

다시 원상태로 reflog

만약 reset으로 돌아갔는데
아무래도 괜히 온것 같다는 후회와 절망이 앞을 가린다면?
그래도 걱정할 것이 없다
commit 만 해줬으면 git에서
데이터는 왠만하면 잃어버리기 힘들다
특히나 우리처럼 마공으로 배워서 제한적으로 써왔다면
오히려 지워버리는 것이 엄청난 능력이다

앞서 log는 단순히 commit 의 역사만 보여주지만
head를 가지고 장난친 것 자체를 다 보여주는 명령어가 있다

reflog

git 시작하기

이것도 앞서 log 처럼 각각의 행동에 ID가 붙어있는데
역시나 한 다섯자쯤 쳐주면 된다

위에서 HEAD@{8}을 보면 reset --hard head~3을 이용해서
뒤에서 3번째 백업본으로 돌아간 것을 볼 수 있다
그럼 바로 전 상태로 돌아가고 싶으면?
바로 밑에 아이디를 쳐주면 된다

git reset --hard 3abce

이로써 백업과 다시 되돌리기에 대해서까지 했고
이걸로도 왠만한 작업들에 마구 응용할 수 있을 것이다

다음에는 branch(가지치기) 혹은
온라인상에 업로드 시켜서 집에서 한 작업을
다른곳에서도 손쉽게 다운로드하고 git 작업을
이어나갈 수 있게 하는 방법을 알아보겠다

Written with StackEdit.

Related Posts:

  • 프로그래밍과 프로그래밍언어의 개념목차 프로그래밍(Programming) 용어적 의미 기계어와 컴퓨터 새로운 프로그래밍 언어의 등장 내가 처음 프로그래밍이란 용어를 접했을때의 이미지는 이랬다.-ㅅ- 뭐 비슷한 점도 있지만 실제로 여기에 무슨 우주적 신비가 깃들어 있다거나 하진 않고 충분히 이해가능한 것이다 그래서 초보입장에서 네오랑 만나지 않게 한번 설명해보겠다 프로그래밍(Programming) 용어… Read More
  • 유니티 - 카메라 컴포넌트 설명목차Clear Flags Skybox Solid Color Depth Only Don’t Clear Background Culling Mask Projection Clipping Planes Viewport Rect Depth Rendering Path Target Texture (Unity Pro only) HDR Clear Flags 화면의 어디를 클리어 시킬 것인지를 정한다 라고… Read More
  • 유니티 Mathf.Lerp Mathf.LerpAngle목차Mathf.Lerp 선형보간법 Mathf.LerpAngle Mathf.Lerp 선형보간법Interpolation 이라는 용어가 있는데 보간법(補間法)이라고 한다본인은 수학도 잼병이고 이런 용어도 너무 약하다 거기다 검색해보니 너무 고차원적이라 간신히 흰것은 웹페이지 바탕화면이고 검은것은 글씨라는 것 정도만 해석 가능했다 그래도 어쩌랴 궁금한걸..;;;일단 용어부터 시작하겠다 보간.. 간… Read More
  • 안드로이드 merge 와 include 레이아웃 기법목차 merge태그와 include태그 소개 include 태그 merge 태그 merge태그와 include태그 소개 안드로이드의 레이아웃의 멋진 기법으로 include와 merge 라는 것이 존재한다 공식홈피와 블로그에서도 소개해놨따 http://developer.android.com/training/improving-layouts/reusing-layouts.h… Read More
  • 유니티 - Time.deltaTime델타의 용어뜻 delta : an incremental change in a variable불행히도 네이버 사전에는 없고 그냥 구글을 뒤져보면 여러뜻중에 저런 것이 있다 사실 우리도 지겹게 보아온 단어다 수학에서.. 델타가 어쩌구.. 간단히 변화값이다. 혹은 경과값이라고 할 수 있다유니티의 Time.deltaTime여기서 유니티의 문서를 보면 Time.deltaTime을 이렇게 정의해놨다 … Read More

댓글 1개 :