reset 명령어는 과거 시점의 commit 으로 이동 및 이동한 시점의
커밋을 제외한 이후의 모든 커밋의 이력을 삭제하는 명령어이다.




reset 명령어는 혼자하는 프로젝트에 적합하고 협업이나 함께하는
프로젝트의 경우 commit 을 되돌릴때 revert 명령어를 사용한다.
reflog 명령어를 이용하면 reset 으로 사라진 commit 의 복구가 가능하다.

앞서 사용했던 reset 명령어와 달리 revert 명령어는 원하는 시점의
커밋된 내용만 되돌린후 되돌린 내용에 대해 새로운 커밋을 생성한다.


branch 는 독립적으로 어떤 작업을 진행하기 위한 개념, 여러 개발자
들이 동시에 분리된 작업 영역에서 작업을 진행하여 나중에 하나로 합쳐
하나의 새로운 버전의 작업물을 만들수 있다.


생성한 branch에서 작업물을 main branch에 합치는 2가지 명령어가 있는데 바로 merge와 rebase이다.
그중 merge를 먼저 알아보자
merge는 기존 branch의 이력를 유지한 채 main branch에 합치는 기능이고, 주로 협업 시에 이 명령어를 사용한다.


rebase 명령어는 기존 branch의 이력을 main branch를 하나로 연결하여 하나의 이력으로 만들어주는 과정에서 기존 branch의 이력을
사라지게 하여 좀 더 깔끔한 이력을 만들어주기에 관리가 편하지만,
기존 로그의 해시값이 변경되어 다양한 문제가 생길수있다.


rebase는 위와 같이 merge와는 달리 합치고 싶은 branch에서 rebase 명령어를 진행 후 다시 switch 명령어를 이용해 main으로 이동하여 main에서 merge 명령어를 실행 하여야한다.
merge와 rebase 둘의 명령어는 각각 장단점이 분명하기에 상황에 맞게 사용하면 branch를 이용한 작업에 있어서 용이 할거같다.