Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

미국 사는 수스의 코딩

Git Command 취소 : Git reset 본문

Git

Git Command 취소 : Git reset

캘리 사는 수스 2023. 3. 5. 18:49
반응형

Git에서 코드를 업데이트하는 과정은 아래와 같다. 이 포스팅은 이 git add | git commit | git push 과정에서 실수가 생겼을시, 어떻게 취소하는지를 배울 것이다.

  1. git add
  2. git commit -m ""
  3. git push

예시로, Branch에서 파일 하나를 업데이트하였다. (modified 되었다고 M이라고 적혀있다)

1. git add 취소법

코드 :

 git reset HEAD <file_name>

설명 : 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 <file_name> & git commit -m "" 후 업데이트한 내용은 local repository에 저장된다. 그걸 git reset --soft HEAD^를 이용해서 commit 전 상태인 staging area로 되돌린다. ~1의 의미는 마지막 commit을 취소한다는 뜻이다. ~2는 마지막 2개의 commit을 취소한다는 뜻이다.

2.2 git reset --mixed

코드 :

git reset --mixed HEAD^~1
git reset --mixed "HEAD^"

설명 : git reset --mixed HEAD^를 이용해서 commit 전 전 상태인 working directory로 되돌린다. (다시 commit하기 위해서는 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 push -f origin <branch name>

설명 : git reset HEAD^를 이용해서 working directory 상태로 되돌린다. 그리고 다시 새로운 업데이트를 push할때, git push -f origin test_branch로 강제로 push한다. 맨 마지막 사진을 보면 첫 번째 사진의 push "549a87b"가 존재하지 않는다. push -f로 한 "ad859fc" push가 "549a87b"를 덮어썼기 때문이다.

* 덮어씌우기하게 됨으로 전 단계의 push history가 사라지기 때문에 매우 주의해야 된다.

 

반응형

'Git' 카테고리의 다른 글

Git 브랜치 병합/재배치 : Git rebase  (0) 2023.03.19
Git 브랜치 병합 : Git merge  (0) 2023.03.15
Git 커밋 취소 : Git revert 되돌리기  (0) 2023.03.15
Git 명령어 정리 | 예시  (0) 2023.03.01
Git 용도와 구성 설명  (0) 2023.02.27
Comments