Skip to content

Git 기타 활용팁

각종 유용한 Git 명령어들 정리: mv, rm, restore, reset, diff


The information manager from Hell. - Linus Benedict Torvalds

mv

파일 및 디렉토리를 옮기거나 이름을 바꾸는 명령어

  • 파일 및 디렉토리를 이동
git mv <source> <destination>
  • destination에 이미 파일이 있어도 강제로 이동
git mv -f <source> <destination>
  • 충돌나는 경우를 제외하고 이동
git mv -k <source> <destination>
  • dry-run을 통해 명령을 수행할 시 어떤 일이 일어날지 미리 보여줌
git mv -n <source> <destination>

rm

파일을 워킹 트리와 인덱스에서 삭제하는 명령어

  • 파일을 워킹 트리와 인덱스에서 삭제
git rm <pathspec>
  • 파일을 원격 저장소에서만 삭제
git rm --cached <pathspec>
  • 폴더를 원격 저장소에서만 삭제
git rm -r --cached <directory>

restore

git rm으로 지운 파일을 되살리는 명령어

git restore <file>

Info

과거에는 git checkoutrestoreswitch을 합친 기능을 하는 명령어였고 옵션을 통해 제어했지만 현재는 쓰지 않을 것이 권장된다.

reset

현재의 HEAD를 특정 상태로 되돌린다. 모드가 입력되지 않을 경우 --mixed가 기본 옵션으로 작동한다.

  • commit 취소 및 index(staging area) 리셋1, 변경된 파일들은 unstaged 상태로 워킹 디렉토리에 보존
git reset
git reset HEAD^
git reset --mixed HEAD^
  • commit 취소, 변경된 파일들은 staged 상태로 워킹 디렉토리에 보존
git reset --soft HEAD^
  • commit 취소, 모든 변경 내용은 워킹 디렉토리에서 삭제
git reset --hard HEAD^

Danger

git reset --hard를 사용하면 모든 변경 내역이 삭제되고 모든 내용이 지정된 commit으로 완전히 되돌려진다.

Tip

n번째 전의 commit으로 되돌리려면 아래와 HEAD~n 옵션 사용

git reset --mixed HEAD~n

특정 커밋으로 되돌리려면 아래와 같이 커밋 id 입력

git reset <commit>

Tip

git reset 명령어를 다시 되돌려서 reset 전의 HEAD로 돌아가려면 ORIG_HEAD로 되돌리면 된다.

git reset --hard ORIG_HEAD

diff

여러 가지 대상의 변경 사항들을 보여준다.

  • 기본 명령어
git diff <...> <...>
  • 변경된 파일들의 이름만 출력
git diff --name-only <...> <...>
  • 특정 파일의 변경 사항만 출력
git diff <...>:<file> <...>:<file>
git diff <...>..<...> <file>
git diff <...>..<...> -- <file>

  1. git add 명령어 취소