programing

rm' 대신 'gitrm'을 사용하여 파일을 제거하는 이유는 무엇입니까?

megabox 2023. 7. 18. 21:39
반응형

rm' 대신 'gitrm'을 사용하여 파일을 제거하는 이유는 무엇입니까?

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

사용 시 문제가 되지 않습니다.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삭제가 다음 커밋을 위해 준비되도록 합니다.

Andy의 대답에 덧붙여, 다음과 같은 추가적인 유용성이 있습니다.git rm:

  1. 안전성: 할 때git rmrmGit는 다음 항목 사이에 불일치가 있을 경우 제거를 차단합니다.HEAD파일 버전 및 준비 인덱스 또는 작업 트리 버전.이 블록은 진행 중인 변경사항의 제거를 방지하는 안전 메커니즘입니다.

  2. 보호:git rm --dry-run▁the▁that▁다▁execute▁is를 실행하는 세이프가드입니다.git rm파일을 실제로 삭제하지는 않습니다.대신 제거했을 파일을 출력합니다.

하지만, 만약 당신이 gitrm 대신 rm을 사용하게 된다면,다음을 사용하여 git add를 건너뛰고 변경 내용을 직접 커밋할 수 있습니다.

git commit -a

인덱스 또는 작업 트리와 인덱스에서 파일을 제거합니다. gitrm은 작업 디렉터리에서만 파일을 제거하지 않습니다.

다음을 사용하여 파일을 삭제하는 방법은 다음과 같습니다.rm -f에서 런그다인제거합다니서에스덱음▁it▁with▁from로 제거합니다.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

gitrm을 사용할 때 제거는 다음 커밋의 일부가 됩니다.그래서 만약 당신이 변화를 밀고 싶다면 당신은 gitrm을 사용해야 합니다.

이제야 알 것 같아요.

파일을 변경하는 경우file_a.txt

그리고 나서 하라.

git add file_a.txt
rm file_a.txt
git commit -m 'Commit message'

파일이 작업 디렉토리(예: 디스크에서 또는 휴지통으로 이동)에서 제거되더라도 준비 영역에서는 제거되지 않으므로 준비 영역(예: 인덱스)의 변경 사항이 커밋됩니다.

만약 당신이 대신 한다면,

git add file_a.txt
git rm file_a.txt
git commit -m 'Commit message'

파일이 디스크와 준비 영역에서 삭제되므로 변경 내용이 커밋되지 않습니다.

마지막으로 약속을 한 후에 다음 중 하나를 수행합니다.

rm file_a.txt
git commit -m 'Commit message'

또는

git rm file_a.txt
git commit -m 'Commit message'

준비 영역이나 색인에 변경사항을 추가하지 않았기 때문에 작업 디렉토리에 파일의 복사본만 있으므로 두 명령 모두 동일한 영향을 미칩니다.

그래서 요약하자면rm스테이징 영역이 아닌 디스크에서만 제거됩니다.git rm디스크와 준비 영역(일반 창 또는 Linux 명령으로는 도달할 수 없는 특수 깃 영역)에서 제거됩니다.

git rm보다 안전합니다.rmWindows 또는 MacOS와 같이 대소문자를 구분하지 않는 시스템을 사용하는 경우도 있습니다.다음은 특정한 예입니다.

대/소문자를 구분하지 않는 시스템의 Git 저장소에 다음과 같은 이름의 커밋된 파일이 있다고 가정해 보겠습니다.foo.js실행 시 오류가 발생할 수 있습니다.git rm Foo.js하지만 그렇지 않습니다.rm Foo.js대신.

언급URL : https://stackoverflow.com/questions/7434449/why-use-git-rm-to-remove-a-file-instead-of-rm

반응형