여니의 프로그래밍 study/Github

[Git] commit 삭제하는 방법

여니's 2022. 3. 3. 19:58

 

1. 이미 push한 commit 취소하기

 

(1) 강제 푸쉬를 통해 해결

(*주의: 개인 브랜치에서만 사용할 것*)

 

1번 과정

: 최신 커밋을 취소하여 내가 원하는 곳까지 취소하기

 

git reset 명령어

> 진행된 커밋 이전의 커밋으로 HEAD가 이동함.

 

# 1. mixed
# 작업 디렉토리 유지, 인덱스만 HEAD와 함께 되돌림.
git reset --mixed <commit_id> # == git reset <commit_id>

# 2. hard
# 작업 디렉토리 ,인덱스 모두 되돌림. 
# 따라서 작업하던 내용 모두 정리할 때만 사용 ** 
git reset --hard <commit_id> 

# 3. soft
# 작입 디렉토리, 인덱스 모두 유지, 
# 커밋만 취소할 경우 사용
git reset --soft <commit_id>

https://mylko72.gitbooks.io/git/content/restore/repos.html

 

전체 복원 · Git, 분산버전 관리시스템

 

mylko72.gitbooks.io

# [ 최신 커밋 취소 ]
# 커밋은 했지만 푸쉬는 하지 않았을 때 쓴다.
# 1. 최신 커밋 취소, 스테이징 영역에 커밋 대기중인 파일 취소 
git reset HEAD^

# 2. 최신 커밋 취소, 워킹디렉토리와 스테이징에 있는 파일 취소
git reset --hard HEAD^

# 3. 최신 커밋 취소, 워킹티렉토리와 스테이징에 있는 파일 유지
git reset --soft HEAD^

 

 

 

2번 과정

: 아래 코드로 어디까지 취소가 진행되었는지 확인하기

git log --pretty=oneline

 

3번 과정

: 현재 수정된 파일이 있는지 확인

git status

 

4번 과정

git add .

 

5번 과정

 

git push --force origin 브랜치명

 


(2) 깃 브랜치 새로 생성해서 해결하는 방법

1번 과정

git reset HEAD^ # 가장 최근 커밋 취소하기.
git reset HEAD~3 # 최신 커밋 3개 취소.

 

2번 과정

: 해당 작업 commit 기록

git commit -m "message"

 

3번 과정

: 새로운 브랜치 생성

git checkout -b test

> 해당 로컬 저장소에 있는 폴더, 파일을 포함한

새로운 브랜치가 생성된다. 

 

4번 과정

: 해당 브랜치 삭제 (깃허브 홈피에서)

or

git push origin --delete 브랜치명 (원격 저장소)

git branch -d 브랜치명 (로컬 저장소)

5번 과정

: 해당 커밋 push하기

 git push origin test

 

6번 과정

: 로컬 및 원격 브랜치 상태 업데이트

git remote prune origin