commit 취소
commit은 잘 되었지만, 실제로 파일이 크거나 하면 synch 나 push가 되지 않는다.
(rule 위반) 이때, commit을 다시 되돌리고, 파일을 정리해 보자.
- 마지막 커밋을 유지하되 수정하고 싶을 때
- 변경 사항을 유지한 채로 기존 커밋을 수정할 수 있습니다.
git commit --amend
- 마지막 커밋을 취소하고 변경 사항은 남겨두고 싶을 때
(즉, 커밋을 없애고 파일은 다시 staged 상태로 남겨두고 싶을 때)
- 마지막 커밋을 취소하지만 파일 변경 내용은 유지된다.
git reset --soft HEAD~1
- 마지막 커밋을 취소하고 변경 사항도 없애고 싶을 때
(즉, 마지막 커밋을 삭제하고, 해당 커밋에서 변경한 파일도 unstaged 상태로 만들고 싶을 때)
- 커밋을 취소하고, 변경 내용도 unstaged 상태로 복구된다.
git reset --mixed HEAD~1
- 마지막 커밋을 취소하고 변경 사항을 완전히 삭제하고 싶을 때
(즉, 해당 커밋에서 했던 모든 변경 사항을 없애고 싶을 때)
- 🚨 주의: 변경 사항이 완전히 사라지므로 신중하게 사용
git reset --hard HEAD~1
- 원격 저장소에 이미 푸시한 커밋을 되돌리고 싶을 때
(만약 이미 git push를 실행했다면, 이를 취소하려면 -f 옵션이 필요함)
** 🚨 원격 저장소에 영향을 줄 수 있으므로 협업 중이라면 신중히 사용해
git reset --soft HEAD~1
git push --force
- 특정 커밋을 완전히 되돌리고 싶을 때 (Revert 사용)
- 이 방법은 새로운 "되돌리는 커밋"을 생성하므로, 원래 커밋 기록을 보존하면서도 변경 사항을 취소할 수 있다.
git revert <commit-hash>
Git에서 특정 파일 강제 삭제
- .gitignore에 추가했더라도 이미 Git이 추적 중이면 제거되지 않음.
이때는 아래 명령어를 사용해서 Git의 추적에서 제거해야 한다.
git rm --cached <파일명>.db
예를 들어 data.db를 삭제하려면:
git rm --cached data.db
만약 특정 폴더 안의 모든 .db 파일을 삭제하려면:
git rm --cached -r *.db
🚨 주의
--cached 옵션을 사용하면 파일은 로컬에 남아 있지만, Git의 추적에서는 사라짐.
다시 commit
git commit -m "Remove large file"
git push origin master