[Git] 06. 코드 작성 중 실수 ? 되돌아가자

Zero·2023년 2월 9일
0

Git

목록 보기
6/11

파일을 되돌리려면 ?

파일 하나가 잘못되었을 경우 ctrl + z 여러번 눌러도 되겠지만
수정사항이 너무 많다면 명령어 하나로 처리할 수 있습니다.

--> 최근 commit 된 상태로 현재 파일의 수정내역을 되돌릴 수 있습니다.

--> 입력한 파일이 특정 커밋아이디 시점으로 복구됩니다.

--> 이건 복구랑 상관없지만 이러면 특정 파일을 staging 취소할 수 있습니다.




commit을 되돌리려면 ?

코드를 작성하던 중 과거의 commit이 문제를 일으킨다면 ??

지금 commit이 3개 있는데 여기서 b 파일이 문제가 많아서 b 파일을 만든 d874b2b commit을 취소하고 싶어진겁니다. commit 하나를 취소하고 싶으면 git revert 사용하면 됩니다. 실은 없애버리는건 아니고 commit 하나를 취소한 commit을 하나 생성해줍니다.

--> 그 커밋아이디에서 일어난 일만 취소해줍니다. 새로운 커밋이 생성되고 b파일만 뿅 삭제되어있습니다.


  • git log 다시 해보면 revert 해줬다는 commit이 자동으로 생성 되어있습니다.

  • 작업폴더에서 a, c 파일은 있지만 b 파일은 삭제 되어있습니다.

  • 결론은 revert 명령어 쓰면 특정 커밋에서 있던 일을 지워버릴 수 있습니다.



(참고)

  • revert 할 때 동시에 여러개의 commit id 입력가능

  • 그냥 최근 했던 commit 1개만 revert하고 싶으면 git revert HEAD 하면 편리합니다.

  • merge 명령으로 인해 새로 만들어진 commit도 revert 가능합니다. 그럼 merge가 취소되겠군요 필요하면 찾아보셈


전부 되돌리고 싶다면 ?

--> commit2로 reset --hard 해버리면 commit2 이후의 미래 기억을 모두 잃습니다.


(참고)

  • 여러명이서 협업하는 리포지토리에는 보통 reset 쓰면 안됩니다. 갑자기 소스코드가 사라지는거니까요.

  • untracked 파일들은 (git add 안해놓은 파일들은) 사라지지않고 유지됩니다.

  • git clean 명령어 찾아서 쓰면 untracked 파일들도 다 지울 수 있습니다.


reset 시 옵션 사용 가능

--> 이러면 a, b파일은 남아있고 c 파일이 삭제됩니다.


--> 이러면 a, c파일은 남아있고 b 파일은 staging area에 남아있습니다. 이제 commit 하거나 그럴 수 있습니다.

--> 이러면 a, c파일은 남아있고 b 파일은 staging 되지 않은 상태가 됩니다.

결론은 reset하면서 파일을 아예 지워버리는게 아니라 검토하고 다시 commit 하고 싶으면 --soft / --mixed 사용해봅시다.

실은 git reset 어쩌구만 하면 --mixed 옵션이 자동으로 발동됩니다.

0개의 댓글

관련 채용 정보