Git에서 코드를 업데이트하는 과정은 다음과 같습니다.
이 게시물은 이러한 프로세스별로 실수가 발생했을 때 어떻게 취소/되돌아가는지 배웁니다.
- git add
- git commit -m””
- git push
예를 들어, 브랜치로 파일을 업데이트했습니다.
(수정되었다고 M이라고 쓰여져 있습니다)
1. git add 취소 방법
코드: git reset HEAD
설명: git add test.py에서 staging area로 파일을 추가하고 git reset HEAD test.py에서 파일을 working directory로 되돌립니다.
2. git commit 취소법
git reset 안에 –soft & –mixed & –hard 총 3가지의 방법이 있다.
2.1 git reset –soft
코드: git reset –soft HEAD^~1 또는 git reset –soft “HEAD^”
설명: git add
git reset –soft HEAD^를 사용하여 커밋하기 전의 상태입니다.
staging area로 돌아갑니다.
~1의 의미는 마지막 커밋을 취소한다는 의미다.
~2는 마지막 두 커밋을 취소한다는 의미다.
2.2 git reset –mixed
코드: git reset –mixed HEAD^~1 또는 git reset –mixed “HEAD^”
설명: git reset –mixed HEAD^를 사용하여 커밋 전의 상태 working directory로 돌아갑니다.
(다시 커밋하려면 git add에서 다시 시도해야합니다.
)
2.3 git reset –hard
코드: git reset –hard HEAD^~1 또는 git reset –hard “HEAD^”
설명: git reset –hard HEAD^를 사용하여 완전히 업데이트 전 상태로 되돌리기. (파일을 보면 업데이트된 부분이 모두 사라집니다)
3. git push 취소 방법
코드: git reset HEAD^~1 또는 git reset “HEAD^” 및 git push -f origin
설명: git reset HEAD^를 사용하여 working directory 상태로 되돌리기. 그리고 다시 새로운 업데이트를 푸시할 때 git push -f origin test_branch로 강제로 푸시한다.
마지막 사진을 보면 첫 번째 사진 푸시 ‘549a87b’가 존재하지 않습니다.
push -f로 한 ‘ad859fc’ push가 ‘549a87b’를 덮어썼기 때문이다.
* 덮어쓰는 것으로, 이전 단계의 push history가 사라지므로 매우 주의해야 한다.