Git

git reset

최재국 2020. 12. 1. 16:36

 

Push하기 전이면 reset을 사용할 수 있다.

 

수정하기 전 상태로 되돌린다.

$ git checkout .			// 수정한 모든 파일을 수정하기 전으로 되돌린다.
$ git checkout {folder name}		// 수정한 특정 폴더를 수정하기 전으로 되돌린다.
$ git checkout --{file name}		// 수정한 특정 파일을 수정하기 전으로 되돌린다.
$ git reset --hard HEAD^		// 수정한 모든 파일을 수정하기 전으로 되돌린다.
$ git reset --hard HEAD^ {file name}	// 수정한 특정 파일을 수정하기 전으로 되돌린다.

 

add하기 전 상태(수정한 후 상태)로 되돌린다.

$ git reset --mixed HEAD^		// add한 모든 파일을 add하기 전으로 되돌린다.
$ git reset --mixed HEAD^ {file name}	// add한 특정 파일을 add하기 전으로 되돌린다.

 

commit하기 전 상태(add 한 후 상태)으로 되돌린다.

$ git reset --soft HEAD^

 

 

 

 

 

 

 

현재 작업 트리, HEAD, 인덱스를 특정 버전때로 되돌린다.

$ git reset --hard {commit 번호}

완전 과거 상태로 되돌린때 사용 커밋, 작업 파일이 다 과거로 되돌아감

 

현재 작업 트리는 유지한 채로 HEAD, 인덱스를 특정 버전때로 되돌린다.

$ git reset --mixed {commit 번호}

현재 작업 파일은 유지하면서 특정 버전 부터 현재 버전까지의 커밋은 지우고 새로운 커밋은 남겨야할 때 사용

 

현재 작업 트리와 인덱스는 유지한 채로 HEAD를 특정 버전때로 되돌린다.

$ git reset --soft {commit 번호}

현재 작업 파일은 유지하면서 특정 버전 부터 현재 버전까지의 커밋은 지우고 새로운 커밋을 남기지 않아도 될 때 사용

※ 새로운 커밋을 남길 수 도 있음

 

reset 실행 전 상태로 되돌린다.

$ git reset --hard ORIG_HEAD

 

 

 

reset시 주의사항

로컬 저장소 커밋 히스토리가 원격 저장소 커밋 히스토리보다 뒤라면 push를 할 수 없다.

강제로 덮어써야하는 경우에는 git push -force를 사용한다.