git

[git] reset으로 commit 삭제하고 복구하기

jiheek 2022. 3. 4. 16:27

local에만 commit을 쌓아두다가 한꺼번에 remote로 push를 하려고 하니, 이전 commit에서 큰 파일 때문에 모두 push가 되지 않는 초유의 사태가 발생했다.

 

먼저, 삭제하는 방법

 

1. commit log 확인하기

git log

commit 이름과 날짜로 어느 때로 돌아가야 할 지 확인한다.

로그 창을 벗어나서 다시 터미널로 돌아가고 싶다면 Q 누르면 됨.

 

2. commit 삭제

 

최신 순으로 하나씩 log가 삭제된다. git log로 잘 확인하면서 하나씩 삭제해야 함.

git reset HEAD^

이런 방식으로 오류가 생긴 commit까지 삭제한 후 다시 commit하면 됨!

 

하지만 어림도 없지, 파일 삭제할 때 permission denied 오류가 떴다.

sudo chown -R your_login_name /path/to/folder

위 명령어를 통해 권한 얻을 수 있다.

 

 


실수로 지우면 안되는 commit을 reset한 경우에 복구시키는 방법. (알고 싶지 않았다)

 

1. 이전에 했던 작업들 확인

git reflog

위 명령어를 통해 "commit num HEAD@{숫자}: 작업 내용" 과 같은 형식으로 프린트된 이전 작업들을 확인할 수 있다.

처절한 사투 ..

 

2. 원하는 HEAD로 이동

git reset --hard HEAD@{1}

다시 git log를 확인하면 원하는 head까지의 작업이 생성된 것을 볼 수 있다.

 

 

'git' 카테고리의 다른 글

[git] git status, staging area  (0) 2022.03.21
[git] Fork 협업 플로우  (0) 2022.03.21
[git] Forked repo에서 origin repo pull하기  (0) 2022.03.08
[git] .gitignore 파일/폴더 ignore하기  (0) 2022.03.04
[git] remote master->branch 만들기  (0) 2021.10.07