그렇게 많이 쓰진 않으니 이런게 있다 정도만 알고 넘어가자.
필요할 때 다시 검색해서 찾아봅시당
git restore 파일명
최근 커밋된 상태로 현재 파일의 수정 내역을 되돌릴 수 있습니다.
git restore --source
입력한 파일이 특정 커밋아이디 시점으로 복구됩니다.
git restore --staged
복구랑 상관없지만 특정 파일의 staging을 취소할 수 있습니다.
코드 열심히 짜다가
갑자기 과거 커밋 하나가 문제를 일으키면 어떻게 하죠?

b 파일이 문제가 많아서 b 파일을 만든 시점의 커밋을 취소하고 싶어진 겁니다.
커밋 하나를 취소하고 싶으면 git revert 사용하면 됩니다.
사실 없애버리는건 아니고 커밋 하나를 취소한 커밋 하나를 생성해줍니다.
git revert 커밋아이디
이거 입력하면 됨
그 커밋 아이디에서 일어난 일만 취소해줍니다.

그러면 b 파일 생성 커밋은 그대로 있고, b 파일 생성 커밋 Revert 커밋 하나가 자동으로 생성되어있습니다.
작업 폴더 보면 a, c 파일은 있지만 b 파일은 삭제되어있습니다.

참고
- revert할 때 동시에 여러 개의 커밋 아이디 입력 가능
- 그냥 최근 했던 커밋 1개만 revert하고싶으면
git revert HEAD하면 편리합니다.- merge 명령으로 새로 만들어진 커밋도 revert 가능합니다.
그럼 merge가 취소되겠군요. 필요하면 찾아보셈
git reset --hard 커밋아이디
입력하면 그 커밋이 생성될 때로 시간을 되돌려줍니다.
작업 폴더 내의 파일도 그 시절로 돌아갑니다.

commit2로 reset --hard 해버리면
commit2 이후의 미래 기억을 모두 잃습니다
님들 지금 기억 다 포기하고 7살로 리셋해준다면 돌아갈거에요?
인생 망한놈들은 개꿀이지 하겠지만
인생이 어느정도 궤도에 오른 사람들은 돌아가기 힘듭니다.
마찬가지로 git reset은 그냥 프로젝트 망하면 쓰거나
아니면 짧은 거리를 돌아갈 때 쓰도록 합시다.
참고
여러명이서 협업하는 리포지토리에는 보통 reset을 쓰면 안됩니다. 갑자기 소스코드가 사라지는거니까요.
untracked 파일들은 (staging area에 없는, git add 안해놓은 파일들은) 사라지지 않고 유지됩니다.
git clean 명령어 찾아서 쓰면 untracked 파일들도 다 지울 수 있습니다.
강의 출처