[iOS 사전캠프] Git: reset & reverse

DoyleHWorks·2024년 10월 17일
0

학습 사이트에서 다음 레벨에 해당하는 내용이다.

  • Ramping Up (4) level rampup4
    • Reversing Changes in Git

Reset & Reverse

git reset

주요 개념

  • git reset [옵션] <커밋 해시/상대 참조>
  • 커밋 기록이나 스테이징된 파일을 되돌릴 때 사용
  • 브랜치의 HEAD 포인터를 과거 커밋으로 이동시킴

사용 방식

  • git reset --soft: 커밋을 되돌리지만, 스테이징 영역과 작업 디렉토리는 그대로 둠
  • git reset --mixed: (기본옵션) 커밋을 되돌리고, 스트에지이 영역에서 변경 사항을 제거하지만 작업 디렉토리는 유지함
  • git reset --hard: 커밋을 되돌리고, 스테이징 영역과 작업 디렉토리의 변경 사항을 모두 제거함 (해당 커밋 이후의 모든 변경 사항)

예시:

git reset --hard HEAD~1
// HEAD를 바로 이전 커밋(HEAD~1)으로 되돌리고, 해당 커밋 이후의 모든 변경 사항을 삭제함

주의사항

  • 로컬 커밋을 되돌릴 때 주로 사용하며, 이미 다른 사람과 공유된 커밋을 reset으로 되돌리면 커밋 기록이 덮어써지니 주의해야함
  • --hard 옵션은 되돌릴 수 없기에 매우 신중해야함

git revert

주요 개념

  • git reset <커밋 해시/상대 참조>
  • revert는 새로운 커밋을 만들어서, 특정 커밋의 변경 사항을 역으로 적용한다.
  • 즉, 원래 커밋이 있었던 것은 그대로 남아있고, 그 커밋을 취소하는 새 커밋이 추가된다.
  • 협업 시 주로 사용되며, 히스토리를 변경하지 않으면서도 커밋 내용을 취소할 수 있는 안전한 방법이다.

예시:

git revert <commit hash>
// <commit hash>에 해당하는 커밋을 되돌리는 새 커밋을 만듦
git revert HEAD~2..HEAD
// 최근 2개의 커밋을 되돌림 (HEAD~2부터 HEAD까지)

git reset vs git revert

기능git resetgit revert
목적커밋 히스토리를 되돌리거나 수정함커밋을 취소하는 새 커밋을 만듦
커밋 기록과거 커밋으로 되돌리며 기록을 변경커밋 히스토리를 유지하며 취소 커밋을 추가
위험성히스토리를 변경함 (공유된 브랜치에서 문제 발생 가능)히스토리를 안전하게 유지
용도로컬 브랜치 수정 시 주로 사용공유된 브랜치에서 커밋 취소 시 사용
파일 변경옵션에 따라 스테이징/작업 디렉토리 상태도 변경됨파일 상태는 그대로, 커밋만 취소
profile
Reciprocity lies in knowing enough

0개의 댓글