git 파일이나 폴더 이름 변경 (git rename file or folder)
git 으로 버전 관리할 경우 파일이나 폴더의 이름 변경도 추적할 수 있어야 합니다.
특히 리팩토링시 클래스나 패키지 폴더의 이름 변경은 자주 발생하는 작업이므로 변경 내역을 잘 관리해야 합니다.
변경 사항을 추적하기 어려워지니 절대 삭제후 add 하지 마세요.
git mv
파일 이동 명령어인 mv 사용하면 rename 와 동일한 효과를 얻을 수 있으며 이름 변경 사항을 추적할 수 있으며 다음과 같이 사용하면 됩니다.
git mv oldName newName
-n( --dry-run) 옵션을 사용하면 적용전에 어떻게 변경되는지 테스트가 가능합니다.
예로 config.production.json 를 config.production.json.example 로 변경할 경우 아래 명령을 실행한 후에 commit 해주면 됩니다.
git mv config.production.json config.production.json.example git commit -m "rename"
변경 사항을 확인하기 위해 log --patch 명령을 실행하면 이력에서 rename history 도 확인할 수 있습니다.
git log -p -1
commit 1aa5acddea1f332bf7dec766156d63e69672ed47 (HEAD -> main) Author: KwangSeob Jeong <lesstif@gmail.com> Date: Thu Oct 21 15:14:08 2021 +0900 rename diff --git a/config.production.json b/config.production.json.example similarity index 100% rename from config.production.json rename to config.production.json.example
mv 시 invalid argument 가 발생할 경우
mv 명령시 invalid argument 에러가 발생하는 경우가 있습니다. 제 경험상 파일이나 폴더 이름의 일부를 대소문자로 변경하는 경우에 발생합니다.
예로 sprint 라는 폴더를 Sprint로 첫 글자를 대소문자로 변경하는 경우 위 에러를 접하게 됩니다.
이럴 경우 아래와 같이 임시 폴더 이름으로 rename 하고 임시 폴더 이름을 원래 바꾸려고 한 이름으로 rename 하는 2단계 절차를 거치면 됩니다.
git mv sprint tmpDir git mv tmpDir Sprint