파일을 삭제하는 경우에 대해서 알아보자.


파일을 삭제하는 경우를 테스트 해보기 위해서 미리 삭제용 파일 3개를 넣어놓았다. ^^


1. rm


$ rm rm_test.txt
$ git add rm_test.txt
$ git commit -m "rm rm_test.txt"

git 으로 관리를 하던 파일을 그냥 삭제를 하게 되면 git 은 어떻게 받아들일까?
위 스크린샷을 보면 알겠지만, 그냥 알아서 변화된 사항을 잘 받아들인다.
그러므로, 그냥 'git add' 후 'git commit'을 해주면 된다.

위에서는 'add + commit = commit -a" 으로 처리를 했다 ^^


2. git rm


$ git rm rm_test2.txt
$ git commit -m "rm rm_test2.txt"

git 에서는 삭제를 위한 옵션을 제공을 해준다.
이를 이용하면 삭제와 staging을 한 번에 처리를 할 수가 있다.
이를 상태 그래프로 보면 아래와 같다.


즉, [ rm + add = git rm ] 이다.


3. git rm --cached


$ git rm --cached rm_test3.txt
$ git commit -m "rm --cached rm_test3.txt"

이번에는 조금 특수한 경우이다.

Git 에서는 지우고 싶은데, 지금 작업할 때에는 남겨두고 싶은 경우이다.
즉, 지금 당장 파일은 지우기 싫은데, git 에서는 삭제를 해놓고 싶은 경우에 이렇게 하면 된다.

위 스크린샷을 보면, git rm을 했음에도 실제 파일은 삭제가 되지 않았고,
그러다 보니 git 에서는 untracked 파일이 존재하고 있다고 인지하고 있게 된다.


4. Pattern

쉘 상에서 rm을 사용할 때와 마찬가지로 'git rm'에서도 glob 패턴 등을 그대로 사용할 수 있다.
다만, "*"를 사용할 때에 조금 조심해야 한다.

$ git rm \*~
$ git rm ./out/\*.o

위와 같이 "*" 앞에는 백슬레쉬를 붙여주어야 한다.
이는 백슬레쉬 없이 그냥 "*"를 사용할 경우 Git이 다른 식으로 인식을 하기에 조금 주의를 해야한다.


반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Move file - git mv  (0) 2012.02.13
Upgrade GIt (in Ubuntu)  (0) 2012.02.13
Git Remote Repository (git init --bare)  (0) 2012.02.11
Undo - Unmodify (변경 취소 - git checkout --)  (0) 2012.02.08
Undo - Unstaging (등록 취소 - git reset HEAD)  (0) 2012.02.07

+ Recent posts