git은 버전관리 프로그램이기 때문에 이전 commit으로 되돌아가거나 문제가 되는 commit 내역을 취소할 수 있음
파일을 되돌릴 경우
git restore 파일명
최근 commit 된 상태로 현재 파일의 수정내역을 되돌릴 수 있음
git restore --source 커밋아이디 파일명
이때 commit id는 git log --oneline을 이용하면 commit 내역을 log를 보여주는데
줄 앞에 노란 문자들이 commit 고유 id
git restore --staged 파일명
특정 파일 staging 취소
commit 취소
git revert 커밋아이디
커밋아이디에서 일어난 일만 취소
※ revert 명령시 Vim 에디터가 뜨는 경우 커밋메세지를 수정하라고 말해주는 것
i눌러서 글자를 수정하고, :wq를 누르면 커밋 메세지가 저장됨
esc를 눌러서 나올 수 있음.
revert를 한 후 log를 확인하면 revert해줬다는 commit이 자동으로 생성되고 revert로 한 커밋아이디의 내용은 없어짐
- revert 할 때 동시에 여러개의 commit id 입력가능
- 최근 했던 commit 1개만 revert하고 싶으면 git revert HEAD 하면 편리
- merge 명령으로 인해 새로 만들어진 commit도 revert 가능
시간을 되돌릴땐 git reset
git reset --hard 커밋아이디
커밋이 생성될 때로 시간을 되돌려줌. 작업폴더 내의 파일도 그 시절로 돌아감
예를 들어 commit1,2,3이 있고 reset으로 commit2를 하면
commit2로 돌아가고 log자체에도 commit2 이후 log가 다 사라짐
- 여러명이서 협업하는 리포지토리에는 보통 reset 쓰면 안됨. 갑자기 소스코드가 사라지기 때문
- untracked 파일들은 (git add 안해놓은 파일들은) 사라지지않고 유지됨
- git clean 명령어 찾아서 쓰면 untracked 파일들도 다 지울 수 있음
reset 옵션 설정
git reset --soft 커밋아이디
변경사항을 다 삭제하지 않고 이후에 변경사항들은 staging area에 남아있음
변경사항을 commit할 수 있음
git reset --mixed 커밋아이디
변경사항이 staging되지 않은 상태가 됨
git add하고 commit할 수 있음
reset하면서 파일을 지워버리는 것보다는 검토하고 다시 commit하고 싶다면 --soft / --mixed 사용
git reset을 하면 --mixed 옵션이 자동으로 발동
'Git' 카테고리의 다른 글
GitHub 브랜치로 협업 (0) | 2023.01.29 |
---|---|
GitHub 타인과 협업 (0) | 2023.01.29 |
GitHub 사용법 (0) | 2023.01.28 |
Git에서 branch 만들기 (0) | 2023.01.27 |
Git 설치와 add, commit, diff (0) | 2023.01.27 |
댓글