인프런 - 제대로 파는 Git & Github - by 얄코
지난 강의까지 실습들을 성공적으로 진행했다면 커밋 내역들이 쌓여있을 것이다.
이 커밋(commit)이라는 것들 하나하나가 하나의 버전이라고 보면 돼 메세지와 함께 적어서 커밋하는 것은 해당 버전마다 작업한 것을 적어서 꼬리표로 달아놓은거야. 이렇게 시간 순으로 쌓인 커밋 내역들은 프로젝트를 원하는 과거 시점으로 돌릴 수 있어
reset은 말 그대로 시간을 과거로 되돌리는 것이다. 만약 한 단계 전의 시점(버전)으로 되돌리려면 해당 버전으로 돌아간 다음 이후 행적은 히스토리에서 지워버리는 것이다.
revert는 한 단계 전의 시점(버전)으로 되돌리려면 해당 commit을 삭제하는게 아니라 해당 commit의 변화를 거꾸로 수행하는 commit을 추가한다. 현재 버전에서 추가한게 있으면 삭제하고 변경한게 있으면 그것을 반대로 수행하는 것이다. 그래서 결과적으로 이전 commit으로 되돌아가게 된다.
또한 개발자들은 Git을 사용해서 코드를 공유하고 협업하는데 한 번 공유공간에 올라간 내역을 reset해버리면 협업시 문제가 발생한다. 그걸 기반으로 작업한 다른 사람들의 코드와 심각한 충돌을 일으키게 된다. 때문에, 한 번 공유가 된 커밋들은 revert를 이용해서 되돌려야 한다!!!
(보통 revert로 되돌림 😚😚)
먼저 git log
를 통해 커밋 내역을 확인해보자
이전 시점으로 돌아갈 것인데... reset을 할 때는 되돌아갈 버전(commit)의 커밋 해시가 필요해
그래서 git log
를 통해 커밋 내역 옆에 해시를 복사해서 사용할꺼야 (전부 복사해도 되고 앞부분 몇개만 복사해서 해도 돼)
🎈 git reset --hard 커밋해시
이제 이전 버전(원했던 버전)으로 돌아갔다는 표시가 떴다.
현재까지의 커밋을 복구한 후 다시 git log
, git status
로 상태를 확인하자
🎈 git reset --hard
💡 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴
revert는 되돌릴 커밋. 즉 취소할 커밋의 해시를 이용해야해
🎈 git revert 되돌릴 커밋 해시
이렇게 하면 해당 커밋(취소할 커밋)을 반대로 실행하는 커밋 한개가 새로 생기게 돼 (원상태 복구)
만약 revert를 할 때 충돌이 발생한다면...
해당 오류 내역을 통해 하라는 대로 진행하자
ex)
git rm leopards.yaml
로 Git에서 해당 파일 삭제git revert --continue
로 마무리:wq
로 커밋 메세지 저장git revert --no-commit 되돌릴 커밋 해시
즉 이렇게 명령어를 수행하면 해당 커밋을 되돌리긴 하는데 커밋은 되지 않아! 다른 변화도 함께 하고 싶을 때 사용하는 명령어야!
git reset --hard
git reset --hard
는 아직 커밋되지 않은 것들을 다 지우고 마지막 커밋의 상태로 되돌아가고 싶을 때 사용변경사항 만들어서 커밋하고 이전 버전으로 되돌아가는.. 현재까지 배운 것을 소스트리로 진행해보자.
해당 변경사항들을 모두 스테이지에 올리기
버튼을 통해 git add .
과정을 진행 (=)
그리고 좌측 상단에 커밋 버튼
을 클릭 후 아래 커밋 메세지를 입력한 후에 commit을 눌러주면 변경사항 만들고 커밋하는 과정
이 끝나!
원하는 시점의 커밋에 우클릭 후 커밋 되돌리기
클릭 그러면 해당 커밋의 변경사항을 되돌리는 커밋이 생성 돼! (매우 간단!)
revert시 일어나는 충돌을 소스트리에서도 해결하는 방법
충돌이 일어남을 알려주는 경고창이 뜬다면
스테이지 되지 않은 파일이 있을꺼야! 해당 파일 우클릭 후 충돌 해결
에서 저장소 것을 선택하면 돼
그 후 메세지를 입력 후 커밋하면 완료!
되돌리고 싶은 시점의 커밋에 우클릭 후 이 커밋까지 현재 브랜치를 초기화
를 클릭 후 Hard를 통해 확인 누르면 끝!