CHANGEL
SOLID BASICS
CHANGEL

공지사항

  • DEV.CHANGEL PROFILE
  • SOLID BASIC (289)
    • 공부 STUDY (115)
      • JAVA (57)
      • C | C++ (34)
      • CS (11)
      • MySQL (2)
      • ALGORITHM (1)
      • HTML (2)
      • CSS (2)
      • JS (2)
      • CODING (0)
      • MINI PROJECT (3)
    • 스프링 SPRING (21)
      • [SPRING] 김영한 스프링 입문 (11)
      • [SPRING] 남궁성 스프링의 정석 (1)
      • [SPRING] 스프링 핵심원리 (9)
    • 전공 수업 CS (65)
      • Computer Network (13)
      • algorithms (21)
      • Computer Architecture (7)
      • Software Engineering (4)
      • Data Structure (2)
      • DataBase (1)
      • Digital Engineering (14)
      • Discrete Mathematics (3)
      • Introduction to programming (0)
      • Mobile Software (0)
      • Intelligence and Informatio.. (0)
    • 대외활동 (35)
      • 신한은행 대학생 홍보대사 34기 (8)
      • SKT T프렌즈 5기 (13)
      • SK DEVOTION YOUNG 1기 (9)
      • 성균관 대학교 공학교육혁신센터 수강 (3)
      • 수상 기록 (1)
    • 솝트 33기 안드로이드 (7)
      • [솝트 33기] 회고록 (0)
      • [솝트 33기] 안드로이드 왕초보 스터디 (2)
      • [솝트 33기] 코틀린 스터디 (0)
      • [솝트 33기] Git을 털어보자 깃털 스터디 (4)
    • 멋쟁이사자처럼 11기 (6)
      • 멋사 회고록 (4)
      • 백엔드 세션 (1)
      • 기획 세션 (1)
      • 연합해커톤 운영단 (기획팀) (0)
    • 백준 BAEKJOON (16)
    • 독서 BOOK (10)
    • 자격증 CERTIFICATE (1)
    • 준비 서류 및 회고록 MEMOIR (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

최근 댓글

인기 글

CHANGEL

SOLID BASICS

[GIT] 깃털 스터디 3주차: reset and revert
솝트 33기 안드로이드/[솝트 33기] Git을 털어보자 깃털 스터디

[GIT] 깃털 스터디 3주차: reset and revert

2023. 11. 7. 01:15

reset --hard 정리

  1. c2 커밋을 작성한 시점으로 되돌리기

c2 이후에 작성한 모든 내용이 필요 없는 경우 그저 c2 커밋을 작성한 시간으로 되돌리면 된다

먼저, main 이라는 멀티버스의 시간이 c3 에 있기 때문에 이것을 뒤로 돌려줘야 한다.

그리고 그곳에 있는 HEAD 도 같이 c2라는 시간으로 돌아와야 한다.

메인은 커밋을 참조하고, 커밋은 브랜치를 참조한다. 즉, 참조값을 뒤로 돌려주면 된다.

이럴때 git 에서 reset 이라는 수간에 hard 옵션을 줘서 수행할 수 있다.

reset --mixed 정리

  1. c3 커밋 작성 바로 전으로 돌아가기

이전과 달리 c2 이후에 작성한 내용은 틀리지 않았지만 c3 커밋에서 추가하면 안될 내용이 있는 경우

작성한 내용을 날리면 안 될 것이다. 작성된 내용을 유지하면서 c3 전으로 돌아가기 위해서는 어떻게 해야할까?

이 경우 main 이라는 멀티버스의 시간과 HEAD가 과거로 가는 것과 더불어 1) 과는 다르게 커밋을 하기 전의 상태여야 한다.

워킹 디렉토리 영역에는 이 내용이 작성되어 있어야한다.

또, 커밋으로 추가한 스냅샷 자체에도 수정이 필요하므로 스테이징 에리아는 c3에 추가한 내용이 없어야 좋을 것이다.

이럴땐

git reset --mixed c2

 

reset 이라는 수단에 mixed 옵션을 사용하여 동작을 실행할 수 있다.

브랜치 라는 흐름에서는 뒤로가지 않았지만, 현재 저장되어 있는 영역을 되돌리는 것으로 c3 커밋 작성 전으로 돌아온 느낌을 주는 것!

그리고 mixed 옵션은 생략이 가능하다. (기본 옵션임)

  • mixed
    워킹 디렉토리에서 한 일이 사라지진 않지만 스테이징 에리아의 변경으로 인한 위험이있음
  • hard
    저장하지 않은 모든 내용이 날아갈 수 있다.

revert 정리하기

c3가 올라가서 되돌아갈 수 없는 상황!

이런 상황에서 과거 변경사항으로 고쳐야한다면?

revert 라는 명령어를 사용하면 c3에서 만들어진 변경사항을 없던 c2 상황으로 되돌라고,

revert 했다는 기록을 남길 수 있다. = c3 에 만든 모든 변경 사항을 없애는 새로운 변경 사항을 만드는 것!

reset을 하는 경우 커밋 히스토리가 남지 않고, 직접 워킹 디렉토리 및 스테이징 에리아를 변경하기에 특별한 경우 협업에서 충돌이 많아짐

revert는 되돌린 history를 남겨 그 이유를 남길 수 있고, 협업 시 충돌 최소화 가능

→ 이런 변경이 여기저기 있고 복잡할 때 사용하면 유용하다!

다음 상황에 대한 명령어를 정리해봅시다

(상황1) 팀원이 잘못 reset --hard를 사용하여 작성한 내용을 잃어버렸다고 합니다.

Reflog 확인: 'git reset' 이전의 커밋 해시를 찾아내고, 그것을 사용하여 작업 디렉터리를 복원한다.
'git reflog'를 사용하여 최근 작업 기록을 확인하고, reset 이전의 커밋 해시를 찾아낸 후, 해당 커밋으로 복원한다.

 

 

저작자표시 (새창열림)

'솝트 33기 안드로이드 > [솝트 33기] Git을 털어보자 깃털 스터디' 카테고리의 다른 글

[GIT] 깃털 스터디 WEEK 2주차 - branch and merge  (0) 2023.10.30
[GIT] GIT-STUDY 1주차 - Git으로 파일 관리 시작하기  (0) 2023.10.26
[GIT] GIT-STUDY WEEK 0주차 - Git과 Github를 알아보자  (0) 2023.10.18
    '솝트 33기 안드로이드/[솝트 33기] Git을 털어보자 깃털 스터디' 카테고리의 다른 글
    • [GIT] 깃털 스터디 WEEK 2주차 - branch and merge
    • [GIT] GIT-STUDY 1주차 - Git으로 파일 관리 시작하기
    • [GIT] GIT-STUDY WEEK 0주차 - Git과 Github를 알아보자
    CHANGEL
    CHANGEL
    NOT GIVING UP | SOLID BASICS

    티스토리툴바