Git

[Git] Git, Github 커밋 취소하기

NaDuck 2021. 8. 29. 18:33

 

로컬 레포지토리에서 어떤 시점 이후의 모든 커밋들을 취소하고 싶거나,

잘못 커밋한 내용을 원격 레포지토리(Github)에 push를 했을 때, 이를 취소(삭제)하는 방법을 알아본다.

 

 

1. 로컬 레포지토리에서 커밋 취소하기

(1) 돌아갈 커밋 ID 알아내기

git log 명령어는 지금까지의 커밋 내역을 보여주는 명령어로, 여기서 돌아갈 시점의 커밋 ID를 알아낸다.

✅ 예를 들어, 시간 순으로 A - B - C 커밋내역이 있을 때, B, C 커밋을 취소하고 싶다면 A 커밋의 ID를 알아낸다.

git log

// 또는

git log --pretty=oneline

✅ 위에서부터 아래로 최신 커밋 내역이 보여진다.

✅ 위 사진을 보면 알 수 있듯이, 커밋ID가 꽤나 길다. 다 알 필요는 없고, 앞의 4글자 정도만 알아내면 된다.

 

(2) 해당 시점의 커밋으로 돌아가기

git reset으로 특정 시점의 커밋으로 되돌아갈 수 있다. 

  • --soft: 취소할 작업물이 Working Directory와 Staging Area에 모두 유지된다.
  • --mixed: 기본값으로, 취소할 작업물이 Working Directory에 유지되지만, Staging Area에서 없어진다.
  • --hard: 취소할 작업물이 Working Directory 및 Staging Area에 모두 없어진다.

✅ 취소한 내용이 따로 필요하지 않는 이상, 보통 --hard 옵션이나 --mixed 옵션을 쓰는 편이다.

git reset --hard commitID 

// 또는

git reset --mixed commitID

// 또는

git reset --soft commitID

 

 

 

2. Github에서 커밋 취소하기

커밋을 취소하고 싶다면 먼저 로컬 레포지토리에서 커밋을 취소해야 한다.

앞서 로컬 레포지토리에서 커밋을 취소했다는 가정 하에 아래의 명령어를 입력한다. 

git push --force

✅ 협업 프로젝트의 경우 push force를 하는 것이 매우 민감한 문제가 될 수 있으므로 조심히 사용해야 한다.