관리 메뉴

김종권의 iOS 앱 개발 알아가기

[git] 롤백 revert, reset, cherry-pick 본문

Git, CocoaPods, Xcode, Shell/Git

[git] 롤백 revert, reset, cherry-pick

jake-kim 2021. 2. 9. 22:43

reset 내용

 

[git] 6. branch, reset, merge의 원리

1. branch의 원리 파일 구성도 .git파일 -> refs파일 -> HEAD파일 -> 최신 커밋한 브랜치 파일 -> object(최신 커밋) -> tree, parent object * HEAD : 현재 사용하고 있는 btanch를 가리킴 ex) 브랜치 파일 git..

ios-development.tistory.com

Revert란?

  • revert는 롤백할 때 롤백한 커밋이 새로 찍히며, commit point가 과거로 되돌아가지 않음
  • reset은 롤백하면 commit point가 과거로 돌아가며, 롤백 내역 삭제
  • revert 사용 - 이미 remote에 푸시가 되었을 때 로컬에서 과거의 커밋을 수정하고 push할 경우 변경이 어려움
    - 로컬에서 변경 후 git push -f하면 되지만 위험
    - revert 사용하여 로컬에서 변경 후 push하면 변경 (커밋포인트가 과거로 가서 과거의 내용을 변경하는것이 아니므로)

revert 사용 방법

  • 예제 커밋 - 순서대로 1번, 2번, 3번 각 print()추가
        print(1)
        print(2)
        print(3)

  • git reflog를 통해 롤백할 commit ID 확인

  • 2번 커밋을 롤백하고 싶은 경우: git revert 480fa9f

revert 해결 필요

  • revert 해결

  • revert 해결 후 커밋하면 완료

cherry pick

  • 다른 브랜치에 있는 커밋을 선택적으로 자신의 브랜치에 적용시킬 때 사용하는 명령어
  • 현재 branch X에 있다면, (git checkout X)

  • 13af32cc내용만 현재 브랜치인 X에 적용하는 경우,
git cherry-pick 13af32cc
  • 다수의 내용을 적용시키고 싶은 경우
// 2개의 커밋 체리픽
git cherry-pick 76ae30ef a0ee45lc

// 76ae30ef부터 a0ee45lc까지 체리픽
git cherry-pick 76ae30ef^..a0ee45lc

 

Comments