[Git] clean, reset, reflog, revert, rebase, amend

godud2604·2022년 5월 9일
0

git clean -f

  • untracked 파일을 모두 지울 수 있다.

git clean -fd

  • 디렉터리까지 지우려면 -d 옵션을 추가

git clean -fd --dry-run

  • 지워질 파일을 미리 확인할 수 있다.

git reset "이전 커밋 체크섬"

  • get reset --mixed 옵션과 동일하다.
  • 이전에 있는 commit으로 초기화
  • 변경된 내용들은 working directory에 옮겨진다.

git reset --sort "이전 커밋 체크섬"

  • 이전에 있는 commit으로 초기화
  • 변경된 내용들은 staging area로 이동

get reset --hard "이전 커밋 체크섬"

  • 이전에 있는 commit으로 초기화
  • 변경된 내용들은 완전히 삭제된다.

git reflog

git reset 을 이용하여 git 히스토리를 변경할 수 있다.
다시 예전으로 돌아가고 싶을 때 git reflog 명령어를 실행하여 모든 변경 내역들을 확인할 수 있다.
돌아가고 싶은 해시코드를 복사한 후, git reset "해당 해시코드" 명령어를 입력해주면 다시 돌아갈 수 있다.

단, 주의할 점은 만약 아직 commit을 하지 않은 상태에서 local에 작성한 파일을 git reset hard 옵션을 이용해서 초기화를 했다면 다시 돌아갈 확률이 낮다.
아직 commit을 하지 않은 경우에는, git reset hard 사용을 주의해야 한다.

즉, 이미 commit을 한 것들은 언제든지 예전에 HEAD가 가르켰던 포인트로 돌아갈 수 있다.


git revert

git revert {이전 커밋 체크섬}

  • 새로운 commit을 만들어서 history를 수정 하지 않기 때문에 이미 server branch에 commit이 된 상태라면 reset, rebase를 이용하기보다는 revert를 사용하는 것이 좋다.

git revert --no-commit {이전 커밋 체크섬}

  • commit이 바로 생성되지 않고, 취소되는 변경 사항을 staging area에 추가해준다.

git rebase

기존에 존재하는 history를 변경 하는 것이기 때문에 server에 commit이 된 상태이면 하지 않는 것이 좋다. 혼자 작업하는 경우 commit된 history를 변경할 때 사용하는 것이 좋다. ( rebasing을 하는 순간 뒤의 모든 commit들의 포인터들 역시 업데이트 되어져야 하기 때문이다. )

  • amend : 최신 commit의 타이틀을 변경하거나 수정 사항을 업데이트
  • rebase : 이전의 commit을 업데이트

git rebase -i {이전 커밋 체크섬의 바로 이전 체크섬}


git amend

profile
꾸준히 새로운 것을 알아가는 것을 좋아합니다.

0개의 댓글