본문 바로가기

개발새발 개발자/기타

[GitHub] 실수했을 때 유용한 명령어 몇 가지

1. commit에 push까지 했는데 이전 commit 버전으로 돌리고 싶을 때

1) commit ID 알아내기

git log

돌아가고 싶은 commit 버전의 ID를 복사한다.

 

2) revert 하기

git revert {commit_id}

처음에 복사했던 ID로 revert 한다.

 

그럼 이런 내용이 뜬다. 이러한 내용으로 revert 하겠다는 뜻이다. 맨 위의 Revert 어쩌고 문장은 하고 싶은 대로 코멘트를 작성할 수 있다.

:wq

쓰고 저장한다는 뜻의 명령어를 입력한다. 이때, 콜론(:)은 반드시 먼저 써줘야 한다.

 

다시 git log를 해보면 내가 원했던 버전으로 revert 된 기록이 나온다.

 

3) revert한 내용을 remote에 반영하기

 

※ remote란 github 홈페이지에서 보이는 저장소다. 반대로 local은 내가 작업하고 있는 컴퓨터 파일을 말한다. local에서 revert를 했으니 이 수정된 사항을 github에 반영되도록 remote를 변경해줘야 한다.

git push origin +{commit_id}:master

변경하려고 했던 commit ID를 넣어 push 해준다.

 

2. 복구하고 싶은 commit으로 돌아가고, 원래 했던 업데이트 이력들은 모두 지우고 싶을 때

git reset --hard {commit_id}

revert는 내가 여기서 revert 했다는 기록이 comment로 남는다. 하지만 reset --hard는 그런 기록이 없다. 아예 예전 버전으로 돌아가고 싶을 때 사용한다.

git reset --soft {commit_id}

reset --soft는 기록을 지우지 않고 해당 commit으로 돌아간다. 따라서 복구한 지점 그 이후에 했던 내용으로 다시 commit할 수 있다.

3. remote 내용을 수정하고 local에 반영하고 싶을 때

github 홈페이지에서 멋모르고 어떤 파일을 수정했다가 local과 일치하지 않아 local 파일을 commit 하지 못하는 경우가 있다. 예전에 아무것도 모를 땐 눈물을 머금고 local 파일을 삭제한 후 다시 clone 하곤 했었다(...) 

 

1) remote 내용 불러오기

git fetch origin/master

fetch 하면 local에 반영되지 않은 부분만 불러온다. 

 

2) local에 적용하기

git merge origin/master

그리고 merge를 하면 불러왔던 부분이 local 파일에도 반영된다.