오픈소스SW

오픈소스SW_Chapter09_복귀

강용민 2022. 12. 5. 15:31

복귀

깃에서 코드 작업을 되돌리는 방법은 크게 reset과 revert 두 가지로 나뉜다.

  • reset
    • 커밋을 기준으로 이전 코드로 되돌리는 방법으로 기록한 커밋을 취소한다.
    • 이전 코드로 복귀하려면 복귀 시점을 알려 주어야 한다.
      • git log를 통해 해시 값을 확인 가능, HAED 포인터를 이용하여 상대적 위치를 지정할 수도 있음
    • git reset [옵션] 커밋ID
      • soft : 스테이지 영역을 포함한 상태로 복원
        • 별도의 메시지가 출력되지 않음
        • 복귀 시점까지의 커밋 이력이 사라짐
        • 단순히 HEAD 위치를 이동시킴
      • mixed : 옵션을 지정하지 않으면 기본값인 mixed로 자동 선택
        • 스테이지 상태를 제외하고 복원하기 때문에 Unstaged 상태가 되어 메시지가 빨간색으로 표시됨. 즉, 커밋을 위해선 add 명령어를 실행해야 함.
      • hard : 실제 파일이 삭제된 이전 상태로 복원
        • soft와 mixed 옵션은 이전 커밋으로 되돌리는 과정에서 실제로 삭제되는 내용이 없는 반면 hard 옵션은 리셋되는 복귀 시점의 커밋 상태와 해당 커밋의 워킹 디렉터리까지 모두 되돌림.

reset

  • revert
    • 기존 커밋을 남겨 두고 취소에 대한 새로운 커밋을 생성한다.
    • revert 명령어를 사용하면 병합할 때처럼 메시지를 작성할 수 있다.
    • git rever 커밋ID
    • 리버트는 한 번에 커밋 하나만 취소할 수 있다.
      • 여러 커밋을 리버트하려면 최신 커밋부터 순차적으로 취소해야 한다.
      • git revert 커밋ID .. 커밋ID
    • --mainline : 병합을 취소한 후 체크아웃되는 브랜치를 표시

revert

 

문제

커밋을 되돌리기 위해서는 두가지 방법이 있다. 두가지 방법과 각각의 차이점을 서술하시오.

  • reset : 'git reset 커밋ID'로 커밋을 복귀할 수 있다. 해당 명령어의 특징은 복귀시점으로 HEAD 포인터가 옮겨지며, 복귀시점까지의 커밋이력들이 사라진다.
  • revert : 'git revert 커밋ID'로 커밋을 복귀할 수 있다. reset과는 다르게 복귀시점까지의 커밋이력들이 삭제하는 것이 아닌 기존 커밋들을 남겨 두고 취소에 대한 새로운 커밋을 생성한다. 또한 리버트는 한번에 커밋 하나만 취소할 수 있다.

 

reset 옵션은 무엇이 있으며 각 옵션에 대해 서술하시오.

reset 옵션은 soft, hard, mixed로 나뉘어 있으며 각 옵션은 다음과 같다.

  • soft : 스테이지 영역을 포함한 상태로 복원된다.
  • mixed : unstaged 상태로 복원된다.
  • hard : 실제 파일이 삭제된 이전 상태로 복원된다.