공부방
되돌아 갈 때(revert, reset, restore) 본문
git restore
파일 하나를 되돌릴 때
git restore 파일명
- 최근 commit 된 상태로 현재 파일의 수정내역을 되돌릴 수 있음
git restore --source 커밋아이디 파일명
- 입력한 파일이 특정 커밋아이디 시점으로 복구
git restore --staged 파일명
- 복구랑은 상관없지만 특정 파일은 staging 취소 가능
git revert
commit을 되돌릴 때
- 3개의 커밋 중 b 파일이 문제가 많아서 commit을 취소하고 싶은 상태
- 왼쪽에 있는 노란 문자들은 commit의 고유 id
git revert 커밋아이디
- 그 커밋아이디에서 일어난 일만 취소
- 실행해서 에디터가 뜨면 맘대로 커밋메세지 수정하고 닫으면 됨
- 이렇게 Vim 에디터가 뜬다면 커밋 메세지 수정하라는건데 i 눌러서 글자 수정하고 싶으면 하고 esc 눌러서 나올 수 있음
- :wq 누르면 커밋 메세지가 저장됨
- 에디터 닫고 나면 새로운 커밋이 생성되고 b파일만 삭제되어 있다.
- 그 커밋 id 이후에 했던 파일이나 커밋들은 영향없이 유지된다.
- 로그를 보면 revert 해줬다는 commit이 자동으로 생성되고 작업 폴더에서 a,c파일은 있지만 b파일은 삭제되어 있다.
- 이렇게 revert 명령어 쓰면 특정 커밋에서 있던 일을 지워버릴 수 있다.
- revert할 때 동시에 여러개의 commit id 입력 가능
- 최근 했던 commit 1개만 revert 하고 싶으면 git revert HEAD 하면 됨
- merge 명령으로 인해 새로 만들어진 commit도 revert 가능하다.->merge 취소됨
git reset
그냥 전부 시간을 되돌리고 싶다면
git reset --hard 커밋아이디
- 그 커밋이 생성될 때로 시간을 되돌려줌
- 작업 폴더 내의 파일도 그 시절로 돌아감
- 여러명이서 협업하는 리포지토리에서는 보통 reset 쓰면 안됨.
- untracked 파일들은 (git add 안 해놓은 파일들) 사라지지 않고 유지됨
- git clean 명령어 쓰면 untracked 파일들도 다 지울 수 있음
git reset --hard d874b2b
- a,b 파일은 남아있고 c 파일이 삭제된다.
git reset --soft d874b2b
- a,c 파일은 남아있고 b 파일은 staging area에 남아있다.
- commit 하거나 그럴 수 있음
git reset --mixed d874b2b
- a,c 파일은 남아있고 b 파일은 staging 되지 않은 상태가 된다.
- git add 하거나 commit 하거나 그럴 수 있다.
- git reset 뒤에 아무것도 없다면 자동으로 --mixed 옵션이 된다.
'깃' 카테고리의 다른 글
소스트리 (0) | 2025.03.19 |
---|---|
다양한 git merge 방법(3-way, fast-forward, squash, rebase) (0) | 2024.07.28 |
branch (0) | 2024.06.02 |
vscode에서 깃 쉽게 하기 (0) | 2024.05.30 |
파일 기록 (0) | 2024.05.25 |