Etc.

[코딩애플 / git] git & github(3)_restore, revert, reset 사용법

Olivia Kim 2023. 3. 27. 09:00
반응형

 

📚 코딩애플의 '매우 쉽게 알려주는 git & github'을 수강하며 배우거나 추가적으로 찾아본 것들을 정리한 내용입니다.

 

실수했을 때 되돌아가는 3가지 방법

commit 고유 id 확인하기

git log --online

 

 

 


git restore

# 파일 하나를 최근 commit된 상태로 되돌리기
git restore 파일명

# 입력한 파일을 특정 커밋아이디 시점으로 복구하기
git restore --source 커밋아이디 파일명

# 그냥 참고!, 특정 파일 staging 취소하기
git restore --staged 파일명

 

  • 파일 하나가 잘못되었을 경우 ctrl + z를 여러 번 눌러도 되지만 수정 사항이 너무 많다면 위의 명령어 하나로 처리할 수 있다.
  • id 입력 없이 일반적인 방법으로 restore를 한다면 최근 commit된 상태로 현재 파일의 수정 내역을 되돌릴 수 있다.

 

 

 


git revert

 

# 커밋 하나를 취소하고 취소한 커밋을 생성하기
git revert 커밋아이디

# 최근해 했던 커밋 하나만 revert하고 싶다면
git revert HEAD

 

  • 해당 커밋 id에서 일어난 일만 취소한다. 커밋 메세지를 수정하고 종료하면 된다.
  • 커밋 id 이후에 했던 파일들이나 커밋들은 영향없이 유지된다.
  • revert할 때 동시에 여러 개의 commit id를 입력할 수 있다.

 

 

 


git reset

 

# 해당 커밋이 생성될 때로 내용을 돌려준다.
git reset 커밋아이디

 

  • commit2로 reset --hard해버리면 commit2 이후의 미래 기억을 모두 잃는다.
  • 프로젝트를 아예 엎어버리거나 짧은 거리를 돌아갈때만 써야 한다.
  • 여러 명이서 협업하는 레파지토리는 reset을 절대 쓰면 안 된다. 소스코드 자체가 사라지기 때문이다.
  • untracked 파일들 (git add를 해놓지 않은 파일)들은 사라지지 않고 유지된다.
  • git clean 명령어를 쓰면 untracked 파일도 모두 지울 수 있다.

 

 

 

reset 옵션 설정
--hard
# 위의 예제에서 a, b 파일 남기고 c파일 삭제하기
git reset --hard d874b2b


-- soft
# 위의 예제에서 a, c파일 남기고 b파일 staging area에 넣기. (커밋 가능)
git reset --soft d874b2b


-- mixed (기본값)
# 위의 예제에서 a, c파일 남기고 b staging 하지 않은 상태로 만들기. (add, 커밋 가능)
git reset --mixed d874b2b

 

 

 


rm : 파일 삭제

작업이 완료되어 원격에 push를 보냈는데, 올리지 않아도 되는 폴더를 올렸을 경우가 있다. 그래서 로컬에 삭제한 후 다시 push를 했음에도 github에서는 해당 파일이 삭제가 되지 않을 때, git 명령어를 통한 파일 삭제 후 push를 해주어야 한다.

 

# 원격 저장소와 로컬 저장소에 있는 파일을 모두 삭제할 때
git rm 파일명

# 원격 저장소에 있는 파일만 삭제하고, 로컬 저장소에 있는 파일은 그대로 둘 때
git rm --cached 파일명

 

 

 


[참고 자료]

https://codingapple.com/course/git-and-github/

 

(무료) 매우쉽게 알려주는 git & github - 코딩애플 온라인 강좌

    Next.js는 프론트엔드부터 서버까지 만들 수 있는 React기반 프레임워크입니다. 다른거 필요없이 이것만 사용해도 풀스택 웹개발이 가능합니다.    Next.js 사용시 서버사이드 렌더링이 쉽기 때

codingapple.com

 

 

 

반응형