SVN에서 svn을 사용하지 않고 파일 시스템에서 직접 무언가를 제거하면 많은 두통이 발생했습니다.
을 사용할 때 이것이 문제가되는 것을 발견하지 git
못했지만 git에 자체 rm
구현 ( git rm
) 이 있음을 알았습니다 .
차이점은 무엇이며 rm
그리고 git rm
?
답변
방금 사용하는 경우 rm
에는 후속 조치를 취해야합니다 git add <fileRemoved>
. git rm
한 번에이 작업을 수행합니다.
또한 git rm --cached
인덱스에서 파일을 제거하고 (다음 커밋에서 삭제하기 위해 스테이징) 로컬 파일 시스템에 사본을 보관할 수도 있습니다.
답변
를 사용하여 파일을 제거하는 rm
것은 그 자체로는 문제가되지 않지만 파일이 제거되었다는 것을 커밋하려면 git rm
어쨌든 그렇게해야합니다.
또한 셸에 따라 git rm
파일을 삭제 한 후 수행 하면 탭 완성이 없으므로 경로를 직접 입력해야 git rm
하지만 파일이 여전히 존재하는 경우 탭 완성은 정상적으로 작동합니다.
답변
git rm
--cached
다음 커밋을 위해 삭제가 준비되도록 색인 및 작업 디렉토리에서 파일을 제거합니다 (사용한 경우에만 색인 ).
답변
그러나 git rm 대신 rm을 사용하면 끝납니다. git add를 건너 뛰고 다음을 사용하여 변경 사항을 직접 커밋 할 수 있습니다.
git commit -a
답변
색인 또는 작업 트리와 색인에서 파일을 제거하십시오. 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
답변
git rm을 사용할 때, 제거는 다음 커밋의 일부입니다. 따라서 변경 사항을 푸시하려면 git rm을 사용해야합니다.
답변
Andy의 답변에 추가하면 다음과 같은 추가 유틸리티가 있습니다 git rm
.
-
안전 :
git rm
대신rm
Git은HEAD
파일 버전과 준비 인덱스 또는 작업 트리 버전 간에 불일치가있는 경우 제거를 차단합니다 . 이 블록은 진행중인 변경 사항이 제거되지 않도록 하는 안전 메커니즘입니다. -
보호 :
git rm --dry-run
. 이 옵션은git rm
명령을 실행하지만 실제로 파일을 삭제하지는 않는 보호 수단입니다 . 대신 제거했을 파일을 출력합니다.