본문 바로가기

Computer

[Git] 실수 되돌리기(git reset), 변경하기

git을 사용하다 보면 add나 commit, push 등을 잘못하여 취소해야 하는 상황이 발생하곤 한다. 그리고 commit 메시지를 수정하거나 GitHub에 잘못 올린 파일을 삭제하는 등 크고 작은 변경사항이 생길 때도 있다. 이러한 상황에서 유용하게 사용할 수 있는 여러 가지 명령어를 정리해보았다.



add 취소하기

HEAD 뒤에 파일명을 적으면 해당 파일의 add만 취소하고, 파일명을 적지 않으면 add된 파일 전체를 unstaged 상태로 되돌린다.

$ git reset HEAD <filename>

commit 취소하기

git log에서 지금까지 수행된 각 commit의 HEAD 번호와 고유한 id를 확인할 수 있다.

$ git log

HEAD~ 뒤에 숫자를 넣으면 마지막 n개의 commit을 취소할 수 있다.

$ git reset <option> HEAD~1   # 마지막 1개의 commit을 취소

id를 사용하면 해당 commit이 발생한 시점으로 되돌릴 수 있다.

$ git reset <option> <commit-sha>   # 특정 시점으로 되돌리기

reset 옵션

--soft : commit을 취소하고 해당 파일들을 staged 상태로 워킹 디렉토리에 보존

$ git reset --soft

--mixed : commit을 취소하고 해당 파일들을 unstaged 상태로 워킹 디렉토리에 보존 (기본 옵션)

$ git reset --mixed   # (--mixed) 생략 가능

--hard : commit을 취소하고 해당 파일들을 워킹 디렉토리에서 삭제

$ git reset --hard

commit 메시지 수정하기

$ git commit --amend -m "new commit message"

파일 삭제하기

원격 저장소와 로컬 저장소에 있는 파일을 모두 삭제한다.

$ git rm <filename>

원격 저장소에 있는 파일만 삭제하고, 로컬 저장소의 파일은 삭제하지 않는다.

$ git rm --cached <filename>

파일/폴더 이름 변경 및 이동

oldname과 newname에 파일명 혹은 폴더명을 넣어 이름을 변경하거나, path를 넣어 이동시킬 수 있다.

$ git mv <oldname> <newname>

원격 저장소 url 변경하기

GitHub repository 이름을 변경한 경우 다음과 같이 변경된 url을 로컬 저장소에 적용해준다.

$ git remote set-url origin <url>

'Computer' 카테고리의 다른 글

[Git] Git, GitHub 기본 사용법  (0) 2021.01.14
마크다운(Markdown) 문법 정리  (0) 2021.01.08
[Linux/Ubuntu] 터미널 명령어 정리  (0) 2021.01.08