[Git] 변경사항 취소하기 및 시간여행

업데이트:     Updated:

카테고리:

태그:

🎯Checkout 명령의 다양한 사용법

  • 브랜치 Checkout (git switch 명령 사용 가능)
  • 커밋 Checkout (Detached HEAD)
  • 변경사항 폐기 (git restore 명령 사용 가능)

Detached HEAD

  • 일반적으로 HEAD는 현재 브랜치를 참조합니다. 그리고 브랜치 참조는 커밋을 가리킵니다.
  • 분리된 HEAD에서 HEAD는 특정 커밋을 직접 가리킵니다.
  • 이 방법은 특정 커밋을 기반으로 새로운 브랜치를 만들거나, 특정 커밋 상태의 파일을 확인하기 위해 사용될 수 있습니다.
  • 되돌아가려면 git switch - 또는 git switch <branch-name>, git checkout <branch-name>을 사용합니다.

변경사항 폐기

git checkout 명령을 사용하여 마지막 커밋으로부터 변경 된 내용을 삭제할 수도 있습니다.

$ git checkout HEAD <file1> <file2>
$ git checkout -- <file1> <file2>

git restore 첫 번째 용도

git restore는 변경사항 폐기와 같이 git checkout의 역할을 일부 수행합니다. git restore는 –source 매개 변수를 사용하여 HEAD 이외에 다른 소스를 사용할 수 있습니다. (–sourㅊe를 지정하지 않으면 HEAD가 기본 값)

$ git restore <file1> <file2>
$ git restore --source HEAD~2 <file>

git restore 두 번째 용도

git restore의 두 번째 용도는, 스테이지된 파일을 언스테이지하는 것입니다.

$ git restore --staged <file1> <file2>

🔎git reset vs git revert

  • git resetgit revert 모두 특정 커밋을 실행 취소할 때 사용합니다
  • git reset은 되돌아가려는 커밋 이후의 기록은 모두 삭제됩니다
  • git revert는 되돌아가려는 커밋 이후의 기록을 모두 보존하고, 새로운 커밋을 만듭니다.
  • 새로운 커밋 생성 시에는 충돌이 발생할 수 있고, 이러한 경우 유지하려는 내용으로 파일 수정 후 수동으로 커밋 해야됩니다.
  • 다른 사람들과 협업하는 환경에서 git reset을 실행하여 이미 공유된 특정 커밋을 삭제하게 되는 경우 merge 시 상황이 복잡해질 수 있습니다.
  • 따라서 다른 사람들에게 이미 공유된 커밋을 실행 취소하려고 하는 경우 git revert를 사용하는 것이 권장됩닏나. 공유되지 않은 커밋을 실행 취소하는 경우에는 git reset을 사용해도 무방합니다.

👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

git 카테고리 내 다른 글 보러가기

댓글남기기