Git 저장소에 빈 디렉토리를 어떻게 추가 할 수 있습니까?


질문

 

GIT 저장소에 빈 디렉토리 (파일이없는 파일이 포함되어 있지 않음)를 어떻게 추가 할 수 있습니까?


답변

 

디렉토리 스테이 (거의) (저장소에서)를 만드는 또 다른 방법은 해당 디렉토리 안에이 네 줄이 포함 된 .gitignore 파일을 만드는 것입니다.

# Ignore everything in this directory
*
# Except this file
!.gitignore

그런 다음 M104의 해결책에서해야 할 일을 바로 주문할 필요가 없습니다.

또한이 디렉토리의 파일이 Git 상태를 수행 할 때 "untracked"로 해당 디렉토리의 파일이 표시되지 않는 이점을 제공합니다.

@ greenasjade의 코멘트 만들기 :

나는이 솔루션이 정확하게 질문이 무엇인지, 아마도이 질문을 보는 많은 사람들이 찾고있는 것이 아마도이 해결책을 주목할 가치가 있다고 생각합니다.이 솔루션은 디렉토리가 비어 있음을 보장합니다.그것은 "나는 정말로 파일을 여기에서 확인하지 않기를 원하지 않는다"고 말한다."나는 여기에서 체크인 할 파일이 없지만 여기에 디렉토리가 필요하지만, 파일이 나중에 오는 것이 좋습니다".



답변

당신은 할 수 없습니다.Git FAQ를 참조하십시오.

현재 GIT 인덱스의 디자인 (스테이징 영역)만이 파일만을 허용합니다 나열하고, 아무도 충분히 유능하지 않습니다 변경을 비우기 위해 변경하십시오 디렉토리는 충분히 돌보아 왔습니다 이 상황은 그것을 해결합니다. 디렉토리가 자동으로 추가됩니다 그 안에 파일을 추가 할 때.저것 그렇지 않으면 디렉토리가 추가 될 필요가 없습니다 저장소에 이르기까지 추적되지 않습니다 자신에. "git 추가

"라고 말할 수 있습니다. 거기에 파일을 추가합니다. 당신이 정말로 디렉토리가 필요하다면 체크 아웃에 존재해야합니다 파일의 파일..Gitignore는 잘 작동합니다 이 목적;비워 둘 수 있습니다. 또는 파일 이름을 채우십시오 디렉토리에 나타날 것으로 예상됩니다.



답변

디렉토리에있는 .Gitkeep라는 빈 파일을 만듭니다.



답변

왜이 이유를 원하는 이유, 저장소의 디렉토리에 대한 설명으로 항상 디렉토리에 Readme 파일을 넣을 수 있습니다.



답변

touch .placeholder

Linux에서 이것은 .Placeholder라는 빈 파일을 만듭니다.그것이 가치가있는 것이 무엇인지,이 이름은 git에 불가지론되어 있으며,이 접근법은 시스템의 다양한 다른 장소에서 사용됩니다./etc/cron.d/.placeholder.둘째, 다른 사용자가 언급했듯이 .git 접두사 규칙은 구성 목적으로 자체가 사용하는 파일 및 디렉토리에 대해 예약 할 수 있습니다.

또는 다른 답변에서 언급했듯이 디렉토리에는 설명이 포함 된 readme.md 파일이 대신 포함될 수 있습니다.

어느 쪽이든이를 위해서는 파일의 존재가 응용 프로그램이 중단되지 않도록해야합니다.



답변

왜 빈 버전이있는 폴더가 필요합니까?

먼저 첫 번째 것들:

빈 디렉토리는 Git 버전 관리 시스템에서 트리의 일부일 수 없습니다.

그것은 단순히 추적되지 않을 것입니다.그러나 "버전 관리"빈 디렉토리가 의미가있는 시나리오가 있습니다.

사전 정의 된 폴더 구조를 스캐 폴딩하여 저장소의 모든 사용자 / 기여자가 사용할 수있게합니다.또는 위의 전문화 된 경우는 캐시 / 또는 로그 / 디렉토리와 같은 임시 파일의 폴더를 만들고 폴더를 제공하려는 폴더를 만들지 만 내용을 제공합니다. 위와 관련하여 일부 프로젝트는 일부 폴더가 없으면 작동하지 않습니다 (이는 종종 가난하게 설계된 프로젝트의 힌트가 있지만, 실제 세계 시나리오가 자주 발생할 수 있으며, 해결할 수있는 허가 문제가있을 수 있습니다).

일부 제안 된 해결 방법

많은 사용자가 제안합니다 :

  1. Placing a README file or another file with some content in order to make the directory non-empty, or
  2. Creating a .gitignore file with a sort of "reverse logic" (i.e. to include all the files) which, at the end, serves the same purpose of approach #1.

두 솔루션 모두 확실하게 작동하는 동안 Git 버전 관리에 대한 의미있는 접근 방식과 일치하지 않습니다.

왜 당신은 당신의 프로젝트에서 정말로 원하지 않는 가짜 파일이나 readmes를 넣는 이유는 무엇입니까? 왜 .Gitignore를 사용하여 가능한 것에 대한 (파일 제외)의 의미와 매우 반대되는 것 (파일 유지)을 사용하는 이유는 무엇입니까?

.Gitkeep 접근

버전 시스템의 폴더가 있으면 .gitkeep라는 빈 파일을 사용하십시오.

그것이 큰 차이가 아닌 것처럼 보이지만,

폴더를 유지할 목적이있는 파일을 사용합니다.당신은 당신이 원하지 않는 정보를 거기에 넣지 않습니다. 예를 들어, 폴더를 유지하기위한 변명이 아니라 유용한 정보로 읽기, 잘, 잘 읽는 것으로 읽어야합니다. 우려의 분리는 항상 좋은 일이며, 원하지 않는 파일을 무시하기 위해 .gitignore를 추가 할 수 있습니다. 이름 지정 .Gitkeep은 파일 이름 자체 (및 공유 프로젝트에 적합한 다른 개발자와 Git 저장소의 핵심 목적 중 하나)에서 매우 명확하고 간단합니다. 코드와 관련이없는 파일 (선행 점과 이름으로 인해) igit와 관련된 파일 그것의 목적 (유지)은 분명히 명시되어 있고 일관되고 무시하는 의미에서 의미심장합니다.

양자

나는 Laravel, Angular-CLI와 같은 매우 중요한 프레임 워크에 의해 채택 된 .gitkeep 접근법을 보았습니다.

출처:https://stackoverflow.com/questions/115983/how-can-i-add-a-blank-directory-to-a-git-repository