reset
`reset` 명령어로 특정 커밋 지점으로 되돌아가고, 이력을 정리하며 원격 저장소에 변경사항을 반영할 수 있다.
참고글 :
git reset HEAD~1 / 가장 최근의 로컬 커밋 제거 방법
가장 최근의 로컬 커밋을 제거하려면 git reset HEAD~1 명령어를 실행하면 된다.구체적으로는 커밋을 취소하고 수정된 파일을 다시 스테이징 영역으로 가져와 이전 상태로 되돌리고 싶을 때 사용할
energneer.tistory.com
1. 커밋 이력 조회
git log --oneline
위와 같이 한 줄로 로그를 조회하라는 명령어를 입력하면 아래와 같이 터미널에 각 커밋에 대한 일곱자리 해시값과 커밋 메시지가 표시된다.
abcd123 (HEAD -> main, origin/main, origin/HEAD) Add feature XYZ
efgh456 Fix bug in login functionality
ijkl789 Update documentation
mnop012 Refactor code for better performance
- HEAD : 현재 작업중인 브랜치를 가리키며, 브랜치 이름과 함께 가장 최근의 commit 메시지가 표시된다.
2. 원하는 시점으로 되돌리기
Git reset을 사용하면 특정 커밋 지점으로 되돌아갈 수 있다. 다음 명령어를 사용하여 이전 커밋으로 이동한다.
git reset --hard "해당commit의해시값"
- reset hard : 돌아갈 시점 이후의 모든 이력을 삭제하는 옵션. 이전에 커밋한 파일의 이력이 모두 사라진다.
- reset soft : 이력을 남겨두는 옵션. 즉 이전에 커밋했던 파일들은 스테이징 상태로 남겨진다.
예를 들어 해시값으로 `efgh456` 을 입력하고` --hard` 옵션을 사용했다고 가정했을 때, `git log --oneline` 을 입력하면 아래와 같이 터미널에 출력된다. 즉, 해당 커밋 이후의 이력만 남게되는 것이다.
efgh456 (HEAD -> main) Fix bug in login functionality
ijkl789 Update documentation
mnop012 Refactor code for better performance
이 상태에서 `git status` 로 조회하면 아래와 같은 메시지가 출력된다.
$ git status
On branch main
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
- "Your branch is behind 'origin/main' by 1 commit": 로컬 브랜치(main)가 원격 브랜치(origin/main)보다 1개의 커밋만큼 이전 상태에 있다는 뜻임을 나타내는 메시지.
- "and can be fast-forwarded": 이전 커밋이 없거나 다른 커밋들이 없어서 브랜치를 간단히 병합/업데이트할 수 있다는 뜻.
- "(use "git pull" to update your local branch)": git pull 명령어를 사용하여 로컬 브랜치를 업데이트할 수 있다는 뜻. `git pull`은 `git fetch`와 `git merge`를 합쳐놓은 명령어로, 원격 저장소로부터 최신 변경 사항을 가져와 로컬 브랜치를 업데이트한다.
그러나 여기에서 우리는 원격 저장소의 상태를 pull하고 싶은 게 아니라, 로컬의 상태를 원격 저장소에 반영하고 싶은 것이기에 pull이 아니라 push를 해줘야 한다.
3. 원격 저장소에 변경사항 반영하기
원격저장소를 내가 되돌린 상태(현재)와 같게 만들려면 아래 명령어를 사용하여야 한다.
git push -f origin 브랜치명
`-f` 옵션을 사용하여 강제로 푸시(push)하면 원격 저장소에 현재 로컬 저장소의 상태를 강제로 덮어씌울 수 있다. 따라서 이 명령어를 사용할 때에는 주의가 필요하다.
Git push 취소 방법 (feat. '쫄보의삽질' 블로그 탄생 배경)
아래는 저의 생생한 경험담을 바탕으로 작성한 것 입니다. Github 관리 폴더의 이름을 실수로 변경하고 삭제해버렸다. 작업 후 commit 하려고 아무리 찾아봐도 폴더가 보이지 않았다. 나의 피땀눈물
ninano1109.tistory.com
[GIT] ⚡️ git add / commit / push 취소하기 💯 정리
기존 코드를 날리고 싶지않으면 origin(깃헙)에다가 push를 해놓고 리셋해야 원격서버에 내가 작업한게 남는다. 로컬에선 다 사라지기 때문이다. git add 취소하기 (파일 상태를 Unstage로 변경하기) 아
inpa.tistory.com