변경 사항 취소하기

onebbu·2023년 9월 7일
0

Git+GitHub

목록 보기
7/12

Git Checkout

이전 커밋 확인하기

git checkout <커밋 해시 ID>: 특정 커밋으로 되돌아감

헤드는 특정 커밋을 참조하는 것이 아닌 브랜치를 참조 해야 하지만,

이전 커밋을 체크아웃 할 때 실제로 하는 일은 헤드가 커밋을 참조하도록 바꿈(헤드가 분리됨)

git checkout <브랜치>: 특정 브랜치로 변경

커밋으로 되돌아갔다가 브랜치로 변경하여 헤드를 연결 할 수 있음.

헤드는 브랜치를 참조 해야 하므로 되돌아가야 하기 때문

HEAD와 관련된 커밋 참조하기

git checkout HEAD~1: 헤드에서 1개 이전 커밋(1=1개, 2=2개…)

직전 커밋에서 한 일을 참조해야하는데 그 커밋 해시를 찾아보기 싫은 경우 사용

git checkout -: 어느 브랜치에 있었는지 기억나지 않을 때 사용하면 떠났던 브랜치로 돌아감

Git Checkout으로 변경사항 폐기

체크아웃 명령은 파일의 변경사항을 취소할 수 있는데, 기본적으로 이전에 커밋했던 때로 돌아감

git checkout HEAD <파일명> | git checkout -- <파일명>: 깃에게 무엇이든 파일명 안에 있는 것을 취하라고 명령, 파일명 여러 개 입력 가능

Git Restore

수정 사항 취소하기

git checkout이 많은 부담을 가지고 있기 때문에 git switch, git restore가 부담을 덜어줌

git restore: 마지막 커밋 이후 저장소의 변경 사항을 삭제

git restore <파일명>: 가장 최근의 커밋으로 돌아감

git restore --source HEAD~1 <파일명>: 커밋 개수만큼 이전의 모습으로 복원 가능(현재 커밋되지 않은 변경사항을 제거하는 것이 확실한 경우에만 사용)

스테이지 된 파일을 언스테이지

어떤 파일에 API 키나 신용카드 번호 같은 것이 들어갔는데 git add를 한 상태

이 파일을 스테이지 하고 싶지 않은 것을 깨달았고,

git ignore를 쓰면 되지만, 작업을 많이 해서 변경 사항을 여러개의 커밋으로 분할 해야 함.

스테이지 하고 싶지 않은 파일이 추가되어 제거하고 싶은 경우도 있음.

git restore --staged <파일명>: 실수로 어떤 파일을 스테이지해서 다음 커밋에 포함될 건데 그렇게 하고 싶지 않은 경우

Git Reset

커밋 취소하기

마스터 브랜치에서 작업을 하던 중 마지막 커밋 3개가 마스터 프랜치에 있어서는 안되는 것을 깨달음

그것들을 다른 브랜치에 넣고 마스터에서는 제거

git reset: 저장소를 특정 커밋으로 다시 재설정

  • 평범한 일반 재설정
    • git reset <커밋 해시 ID>: 커밋 해시가 무엇이든 거기로 저장소를 재설정
      1. git reset <커밋 해시 ID>를 입력할 경우 특정 커밋 이후 내용이 레포지토리 영역에서 사라짐
      2. 이를 없애기 위해 브랜치를 새로 만들고(git switch -c 브랜치명) 스테이징 영역에 올린 뒤 커밋(git add + git commit)
  • 강제 재설정
    • git reset --hard <커밋 해시 ID>: 특정 커밋 이후의 커밋들을 잃는 명령어

Git Revert

커밋 원래대로 복구

  • git revert <커밋 해시 ID>: git reset은 커밋을 삭제시키지만, git revert는 변경 사항을 실행 취소하는 새로운 커밋을 만듬
    • 명령어를 입력하면 편집기가 열려서 수정, 이후 종료시키면 새로운 커밋이 만들어짐.

다른 사람들과 협력하는 겨우 문제가 될 수 있음

다른 사람들과 팀을 이루어 작업한다면, 모든 다른 컴퓨터를 이용할텐데 다른 모든 사람들이 잘못된 커밋의 복사본을 가지고 있고 내가 재설정으로 제거한다면, 심각한 문제가 될 수 있음(다른 사람들이 가진 기록을 취소하는 것이기 때문)

정리
Reset: 실수를 하고 커밋을 했을 때 다른 사람과 공유하지 않았을 경우
Revert: 공동 작업자가 커밋을 갖자마자 변경사항을 제거하고 싶을 때

profile
느리지만 조금씩 발전해가기

0개의 댓글