문제

repo @ github가 있습니다. 나는 집에서 일을했고 그것을 Github로 밀었습니다. 파일과 디렉토리의 일부 삭제가 포함되었습니다. 이제 파일과 디렉토리를 삭제하기 전에 코드 사본이있는 작업 상자에 있습니다.

다음을 발행했습니다.

git remote update
git checkout HEAD
git pull origin HEAD

그것은 모든 파일을 삭제했지만 파일에있는 디렉토리는 아닙니다.

두 가지 질문 :

  1. 디렉토리를 제거하지 않은 이유는 무엇입니까?
  2. 현재 상태에서 문제를 제거하기 위해 발행 할 수있는 git 명령이 있습니까?
도움이 되었습니까?

해결책

GIT는 디렉토리를 추적하지 않으므로 병합 또는 기타 변경의 결과로 비어있는 디렉토리를 제거하지 않습니다. 그러나 사용할 수 있습니다 git clean -fd 추적되지 않은 디렉토리를 제거하기 위해 ( -fd 깃발은 에프추적되지 않은 파일의 orce 제거 및 irectories).

다른 팁

작업 트리를 변경하는 대부분의 작업의 일환으로 (풀, 병합, 체크 아웃 등) GIT는 해당 작업에 의해 비어있는 디렉토리를 제거합니다 (즉, 마지막 파일을 제거 함).

Git은 완전히 비어 있지 않은 디렉토리를 제거하지 않으므로 파일이 숨겨 지거나 무시한 경우 git이 마지막을 제거하기 때문에 추적 해당 디렉토리의 파일이 반드시 GIT가 해당 디렉토리를 제거 할 수 있다는 것을 의미하지는 않습니다. Git은 이것이 오류 조건으로 간주하지 않으므로 불평하지 않습니다.

GIT는 디렉토리, 파일 (경로와 함께)을 추적하지 않습니다. Git은 아직 존재하지 않는 경우 해당 경로의 모든 디렉토리를 만듭니다 (Cool!). ~ 아니다 경로에 포함 된 모든 파일이 이동 또는 삭제되면 삭제하십시오 (Cool은 아니지만 이유가 있습니다).

해결책 (일단 잡아 당기 / 빨리 포장 / 병합되면) :

git stash --include-untracked
git clean -fd
git stash pop

그렇지 않다면 stash ~ 전에 clean, 당신은 당신의 추적되지 않은 모든 파일을 (돌이킬 수 없게) 느슨하게합니다.

참고 : 이것은 무시 된 모든 파일도 정리하므로 프로젝트 메타 데이터를 재현하기 위해 일부 빌드 스크립트를 다시 실행해야 할 수도 있습니다 (예 : ./gradlew eclipse). 이것은 또한 비어 있고 GIT 파일의 경로의 일부가 아닌 디렉토리를 삭제합니다.

GIT는 현재 디렉토리를 추적하지 않습니다 (참조 git 위키), 즉, 빈 디렉토리를 추가하거나 git이 비어있는 디렉토리를 제거 할 수 없습니다. (편집하다: 고마워, 만니, 난 틀렸어! 당신은 할 수 없습니다 추가하다 빈 디렉토리이지만 git 제거하다 추적 된 콘텐츠가 삭제되어 비어있는 디렉토리.)

빈 디렉토리를 제거하라는 명령에 관해서는 운영 체제에 따라 다릅니다.

사용할 수있는 Linux의 경우, 예를 들어

find -depth -type d -empty -exec rmdir {} \;

그러나 이것은 제거됩니다 모두 빈 디렉토리!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top