왜 'rm'대신 'git rm'을 사용하여 파일을 제거합니까?


171

SVN에서 svn을 사용하지 않고 파일 시스템에서 직접 무언가를 제거하면 많은 두통이 발생했습니다.

을 사용할 때 이것이 문제가되는 것을 발견하지 git못했지만 git에 자체 rm구현 ( git rm) 이 있음을 알았습니다 .

차이점은 무엇이며 rm그리고 git rm?

답변:


253

방금 사용하는 경우 rm에는 후속 조치를 취해야합니다 git add <fileRemoved>. git rm한 번에이 작업을 수행합니다.

또한 git rm --cached인덱스에서 파일을 제거하고 (다음 커밋에서 삭제하기 위해 스테이징) 로컬 파일 시스템에 사본을 보관할 수도 있습니다.


좋은 대답입니다. 내가 사용 할 수 있었다 git reset --hard나는 커밋되지 않은 변경을하지 않았다 알고 있기 때문에 분리 된 머리 상태에 나가 마스터의 체크 아웃을 한 후 않습니다. 변경 사항을 커밋하지 않은 경우 git stash를 수행하고 싶을 수도 있지만 git을 처음 접하므로 정확한 명령을 알 수 없습니다. 2014 년 또는 그 이후에 이곳에 오 셨다면이 답변이 도움이 되었기를 바랍니다.
Eric Hepperle-CodeSlayer2010

@Andy-을 rm대신 git rm하여 사용하고 많은 파일을 삭제하면 파일 git을 추적 하고 싶지 않습니다 . 변경 사항을 되 돌리는 방법이 있습니까? 내가 원하는 git내 밟아 rm내가 사용하지 않은 이후로 제거 git rm처음에.
Chetan Arvind Patil

이것이 온라인 문서에서 명확하게 설명되어 있으면 좋을 것입니다 (있을 수도 있지만 명백하지 않거나이 질문은 없었습니다). OS rm 라우트를 사용하는 경우 사용자가 잘못한 것이 없다는 것을 알고 있으면 좋을 것입니다. 그리고 OS 경로를 사용해야 할 이유가 있습니다. 예를 들어 변경 사항을 커밋하기 전에 무언가가 작동하는지 테스트하기 위해 파일을 삭제 해야하는 경우 git 경우와 같이 작업을 단계 취소 해야하는 것처럼 OS 경로는 git rm을 사용하는 것보다 조금 안전합니다 .OS 옵션에서는 가져 오기 위해 (믿습니다).
bob

12

를 사용하여 파일을 제거하는 rm것은 그 자체로는 문제가되지 않지만 파일이 제거되었다는 것을 커밋하려면 git rm어쨌든 그렇게해야합니다.

또한 셸에 따라 git rm파일을 삭제 한 후 수행 하면 탭 완성이 없으므로 경로를 직접 입력해야 git rm하지만 파일이 여전히 존재하는 경우 탭 완성은 정상적으로 작동합니다.


7

git rm--cached다음 커밋을 위해 삭제가 준비되도록 색인 및 작업 디렉토리에서 파일을 제거합니다 (사용한 경우에만 색인 ).


4

그러나 git rm 대신 rm을 사용하면 끝납니다. git add를 건너 뛰고 다음을 사용하여 변경 사항을 직접 커밋 할 수 있습니다.

git commit -a


3

색인 또는 작업 트리와 색인에서 파일을 제거하십시오. git rm은 작업 디렉토리에서만 파일을 제거하지 않습니다.

다음을 사용하여 파일을 삭제 한 rm -f다음 색인에서 파일 을 제거하는 방법은 다음과 같습니다.git rm

$ rm -f index.html
$ git status -s
 D index.html
$ git rm index.html
rm 'index.html'
$ git status -s
D  index.html

그러나이 모든 것을 한 번에 수행하면됩니다. git rm

$ git status -s
$ git rm index.html
rm 'index.html'
$ ls
lib vendor
$ git status -s
D  index.html

2

git rm을 사용할 때, 제거는 다음 커밋의 일부입니다. 따라서 변경 사항을 푸시하려면 git rm을 사용해야합니다.


2

Andy의 답변에 추가하면 다음과 같은 추가 유틸리티가 있습니다 git rm.

  1. 안전 : git rm대신 rmGit은 HEAD파일 버전과 준비 인덱스 또는 작업 트리 버전 간에 불일치가있는 경우 제거를 차단합니다 . 이 블록은 진행중인 변경 사항이 제거되지 않도록 하는 안전 메커니즘입니다.

  2. 보호 : git rm --dry-run. 이 옵션은 git rm명령을 실행하지만 실제로 파일을 삭제하지는 않는 보호 수단입니다 . 대신 제거했을 파일을 출력합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.