GIT 과거의 버전으로 돌아가기(reset, revert)

자 그럼 이번시간에는 버전관리의 또다른 효용 두 번째인
과거로 돌아갈수있다는 점을 살펴보겠습니다

지금부터 살펴볼 명령은 '커밋을 취소하는 명령'인데 좀 어렵고 주의해서 사용하셔야 해요
그래서 이번에는 간단하게 이런게 있다정도만 짚고 넘어가려고 합니다. 



$ git reset --hard "버전 id" 
// 버전 id로 돌아가는 명령

$ git revert "버전 id"
// 버전 id의 커밋을 취소한 내용을 새로운 버전으로 만드는 명령

깃의원리를 아신다음에 다시 이 내용을 보시면 덜 혼란스럽고 덜 위험할 거에요.
교양과목처럼 생각하고 읽어요~





자, 현재의 로그를 취소해서 과거 돌아가고싶다
(예를 들면 현재 4인데 3으로돌아가고싶다)

크게 두가지 방법이 있습니다.

reset VS revert

이 둘은 비슷하지만 달라서 섣불리하면 안돼요.

git reset을 했을 때 그것이 3으로 돌아갈 까? 3도 지울까?
나중에 자주 헷갈리는 부분이니 미리 한번 생각해보세요.

4에해당하는 커밋들을 삭제하고 3을 최신상태로 하려고 reset명령을 사용해봅시다.
자 그럼 일단 3의 커밋주소를 카피하고




$ git reset (카피한)[커밋주소] --hard
엔터하면 헤드가 리셋한 주소에 있다고 나옵니다.




git log 했을때 어떻게 되었나요?
4가 사라졌어요. 리셋할 때 입력한 커밋주소 이후의 커밋들이 사라지는 거에요

이렇게 커밋이 취소가되면서
동시에 우리는 버전3 커밋에 해당되는 소스코드상태로 돌아가게 되요.


추가로
깃에선 왠만하면 어떠한정보도 삭제하지 않아요.

제가 깃리셋해서 버전 1개를 버린것처럼 보이지만
실제론 버린게 아니라 남아있어요.
다만 우리눈에 보이지 않을 뿐이고 나중에 필요하면 복구할 수도 있어요.
그리고 복구는 깃의 원리를 이해하셔야 쉽게할 수 있어요.




주의사항이 있는데
나중에 원격저장소를 배우면 협업을 할수있게 되고 우리 저장소의 버전들을 인터넷에 올릴 수 있어요. 자신의 버전을 다른곳에 공유하는 거죠.
그런데 공유한 이후에는 절대로 reset을 하면 안되요

즉, 여러분이 리셋을 하는 커밋은 공유하지 않은 여러분 컴퓨터에만 있는 버전에 대해서만 리셋작업을 하셔야되요.


관련 이미지


취소하는 첫번째방법으로 리셋을 알려드렸고
리셋을 할때 뒤에 --hard를 붙였는데 이 hard는 굉장히 이해하기쉽지만 위험한 방법이에요

리셋이 필요할때는 심플하게 하드를 쓰면되요.
그리고 hard 외에도 soft, mixed 등 여러가지 옵션들이 있습니다.
이런 옵션을 이용하면 파일을 좀더 안전하게 할수 있지만,
이해하고 알아야할 것들이 많아지는 대가가 따릅니다.
나중에 원리를 살표본 다음에 기회가 되면 섬세하게 리셋을 시키는 방법도 알아봅시다.

revert에 대한 이미지 검색결과

reset이 아닌 커밋을 취소하는 또 다른 방법으로 revert가 있습니다.

이 리버트는 리셋처럼 커밋을 취소하는 건데
이건 커밋을 휙 날려버리는 것이 아니라
커밋을 취소하면서 새로운 버전을 생성하는 거에요.


현재수준에서 리셋과 리버트를 다 배우는건 과한 일이에요
그냥 리셋과 리버트라는 것이 있고 이것들을 이용하면
'어떤 방식이던 간에 커밋을 되돌릴 수 있다' 정도로만 이해하시고 넘어가시면 됩니다.


나중에 정말로 리셋과 리버트라는 것이 필요할 때 충분히 공부하도록 합시다.


참고하시라고 링크하나 걸어둘게요
reset과 revert의 차이점








댓글

이 블로그의 인기 게시물

AWS RDS DB 인스턴스에 연결하기 (Oracle Database Instance)

tomcat server.xml ( 톰캣 서버 설정 )

Git resolving merge conflicts as Mark resolved (mark resolved 옵션으로 해결)