본문 바로가기
Dev Tools/Git

[Git] git add, commit, push 취소, (amend, commit message 변경)

by lucas_owner 2023. 2. 2.

목차

 

 

목표

- 해당 글 에서는 git add, commit, push 를 취소하는 방법을 활용 해 볼것이다. 

 

만약 개념적인 부분을 좀 더 보고싶다면 아래의 링크들에서 확인해보세요.

 

- reset, revert 개념

https://lucas-owner.tistory.com/35

 

[Git] Git (reset, revert) 정리 및 개념

Git 명령어 - reset, revert 개념 및 정리 - git 을 사용하다 보면 다양한 상황이 발생하는데, 그중에서는 정말 무시무시한 일이 발생 할 수도 있다. 예를 들자면, RollBack을 해야 한다거나, Conflict 가 났

lucas-owner.tistory.com

 

- git 각 기능에 대한설명

https://lucas-owner.tistory.com/29

 

[IntelliJ] IntelliJ Git 사용법 (2) - (commit, push, merge, checkout)

IntelliJ Git 사용법 (1) - commit, push, merge, checkout - IntelliJ 에서 Git을 사용해서 협업을 진행 하게 된다면, 터미널(Mac)이나 cmd(Windows)를 통해 명령어를 사용하지 않고 진행 할 수 있다. (필자는 커맨드를

lucas-owner.tistory.com

 

 

git add 취소 

- git staging area에 있는 파일을 unstaged 상태로 만드는것.

  1. (git add -A )혹은 (git add *) 명령어로 모든 파일들을 스테이징 했을 경우
  2. 특정 파일을 unstaged 상태로 만들고 싶을 경우. 

- 명령어

# 파일명은 생략가능 -> 생략시 모든 파일들 unstaged
git reset HEAD [파일명]

- 위에서 볼 수 있듯. 파일명은 생략 가능하며, 생략시 모든 파일이 unstaging 처리 된다. 

 

- 예제 

 

1. File을 Staging 상태로 변경.

2. 모든 파일 unstaging

 

3. 특정 파일만 unstaging

 

 

git commit 취소 

- commit 을 너무 일찍 했거나, 혹은 다른 파일들을 추가하거나 빼고 다시 커밋 해야 하는경우 많이 사용한다. 

- 해당 글 에서는 push 를 안했다는 가정하에 진행됩니다. (Local Only)

 

# commit 취소 기본 명령어

git reset [reset 모드] [리셋시점]

- reset 모드는 생략 가능 하다. -> default = --mixed 

- 리셋 시점은 HEAD 기준이 될 수 있고, 커밋 해쉬값을 통해 지정 할 수 있다. 

 

○ 옵션 

  1. --soft: 커밋 취소, Staging 상태 유지(add)
  2. --mixed: 커밋 취소, Staging 취소, local은 변경 상태로 유지 (옵션설정 없을시 default)
  3. --hard: 커밋취소, Staging 취소, local 변경 상태 취소
  4. HEAD 옵션 위의 3가지 옵션뒤에 사용한다. (--soft HEAD^)
    1. HEAD^ : 최신 커밋 취소
    2. HEAD~(수량) : 수량에 숫자를 적으면 해당 숫자만큼 최근 커밋부터 해당 숫자까지 커밋 취소.

- 간단 예제 

# 1번 예제 - 가장 최근 commit 취소, 해당 파일 Staging 상태로 유지 
$ git reset --soft HEAD^

# 2번 예제 - 가장 최근 commit 취소, Unstaging 상태로 변경
# Option - 기본 옵션
$ git reset --mixed HEAD^ 

# 2번예제와 동일 - 옵션 제거
$ git reset HEAD^ 

# 마지막 2개 commit 취소
$ git reset HEAD~2

# 3번 예제 - commit 취소 모든 파일 Unstaging 및 변경사항 리셋.
$ git reset --hard HEAD^

 

- 실습 예제 : 가장 최근 커밋 취소, Unstaging 

 

 

git amend  - Commit Message 변경 

- Commit 은 정상적으로 되었으나, 메시지만 변경하고 싶을 경우 사용한다. 

 

- 명령어 및 사용법

git commit --amend

- 추후 나오는 vi 편집기를 사용하여 편집 후 :wq(저장 후 종료) 하여 push.

 

 

git push 취소

- git push 취소의 경우 굉장히 위험한 작업이다. 정말 필요한 경우 사용하도록 하는게 좋다. 

 

- 해당 명령어 사용시, local에서 변경(commit 취소)한 내용들이 원격저장소에 모두 덮어씌어지게 된다.

- 특정 시점 commit 으로 돌아가게 된다면, 이후 모든 commit들이 삭제 되게 된다. 

 

- 기본 명령어 

#1 가장 최근 commit 취소 - local
$ git reset HEAD^

#2 원하는 commit 시점으로 이동
$ git reset HEAD[숫자 혹은 ^] || $ git reset [commit Id]

#3 다시 Commit 
$ git commit -m "Retry Commit and reset"

#4 원격 저장소 강제 push - 취소한 내용 push
$ git push -f

# 혹은
$ git push origin [branch명] -f

-  -f 옵션은 -force 옵션과 같은 기능이며,

- 해당 브랜치에 강제로 push 한다는 옵션이다.

 

 

 

반응형

댓글