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.

댓글 1개 :