파일이없는 빈 디렉토리를 Git 저장소에 어떻게 추가 할 수 있습니까?
답변
디렉토리를 (거의) 빈 상태로 유지하는 또 다른 방법 .gitignore
은 다음 네 줄을 포함 하는 파일을 해당 디렉토리 내에 작성하는 것입니다 .
# Ignore everything in this directory
*
# Except this file
!.gitignore
그런 다음 m104의 솔루션 에서해야 할 방식으로 주문을받을 필요가 없습니다 .
또한 git 상태를 수행 할 때 해당 디렉토리의 파일이 “추적되지 않은”것으로 표시되지 않는 이점도 있습니다.
@GreenAsJade 의 의견을 지속적으로 만들기 :
이 솔루션이 질문에서 요구 한 것을 정확하게 수행한다는 점은 주목할 가치가 있지만 아마도이 질문을 보는 많은 사람들이 찾고있는 것은 아닐 것입니다. 이 솔루션은 디렉토리가 비어 있도록 보장합니다. “진짜로 파일을 체크인하고 싶지 않습니다”라고 말합니다. “여기에 체크인 할 파일이 없지만 여기에 디렉토리가 필요합니다. 파일이 나중에 올 수 있습니다”.
답변
당신은 할 수 없습니다. 힘내 FAQ를 참조하십시오 .
현재 git index (스테이징 영역)의 디자인은 파일을 나열하는 것만 허용하며 빈 디렉토리를 허용하도록 변경 할만 큼 유능한 사람은 아무도이 상황을 해결하기에 충분하지 않았습니다.
디렉토리는 파일을 추가 할 때 자동으로 추가됩니다. 즉, 디렉토리를 저장소에 추가 할 필요가 없으며 자체적으로 추적되지 않습니다.
”
git add <dir>
” 라고 말하면 거기에 파일이 추가됩니다.체크 아웃에 디렉토리가 실제로 필요한 경우 파일을 작성해야합니다. .gitignore는이 목적에 적합합니다. 비워 두거나 디렉토리에 표시 될 파일 이름을 채울 수 있습니다.
답변
.gitkeep
디렉토리에서 빈 파일을 작성 하고 추가하십시오.
답변
리포지토리에서이 디렉터리를 원하는 이유 (비어있는 경우)에 대한 설명과 함께 항상 README 파일을 디렉터리에 넣을 수 있습니다.
답변
touch .keep
Linux에서는이라는 빈 파일이 생성됩니다 .keep
. 가치가있는 것으로,이 이름은 Git에 독립적이며 .gitkeep
Git에만 해당됩니다. 둘째, 다른 사용자가 언급했듯이 .git
접두사 규칙은 Git 자체가 사용하는 파일과 디렉토리를 위해 예약되어야합니다.
또는 다른 답변 에서 언급했듯이 디렉토리에는 설명 README
이나 README.md
파일이 대신 포함될 수 있습니다 .
물론 파일이 존재하더라도 응용 프로그램이 중단되지 않아야합니다.
답변
빈 버전의 폴더가 필요한 이유
먼저 첫 번째 것들:
빈 디렉토리 는 Git 버전 관리 시스템에서 트리의 일부가 될 수 없습니다 .
단순히 추적되지 않습니다. 그러나 빈 버전의 “버전 관리”가 의미가있는 시나리오가 있습니다. 예를 들면 다음과 같습니다.
- 미리 정의 된 폴더 구조를 스캐 폴딩 하여 리포지토리의 모든 사용자 / 기여자가 사용할 수 있도록합니다. 또는 위의 특수한 경우로서, 폴더 를 제공하지만 그 내용 을 제공하려는 임시 디렉토리 ( 예 :
cache/
또는logs/
디렉토리)를위한 폴더 생성.gitignore
- 위와 관련하여 일부 프로젝트 는 일부 폴더가 없으면 작동하지 않습니다 (종종 잘못 설계 된 프로젝트의 힌트이지만 실제 시나리오는 빈번하며 권한 문제가 해결 될 수 있습니다).
몇 가지 제안 된 해결 방법
많은 사용자들이 제안합니다 :
README
디렉토리를 비우기 위해 파일 또는 다른 파일에 일부 내용 배치- 만들기
.gitignore
“역 논리”의 일종으로 파일을 끝에서, 방법 # 1의 동일한 목적을 수행하는 (즉 모든 파일을 포함합니다).
두 솔루션 이 모두 작동 하지만 Git 버전 관리에 대한 의미있는 접근 방식과 일치하지 않습니다.
- 왜 프로젝트에서 원하지 않는 가짜 파일이나 README를 넣어야합니까?
- 가능하지만 파일을 제외하고 의도 한 것과 반대
.gitignore
되는 일 ( 파일 유지 )을 사용 하는 이유 는 무엇 입니까?
.gitkeep 접근 방식
버전 관리 시스템에 폴더가 존재하도록하려면 빈 파일을 사용하십시오 .gitkeep
.
그렇게 큰 차이는 아니지만 보일 수 있습니다.
-
폴더를 유지하기위한 단일 목적의 파일을 사용 합니다. 당신은 당신이 넣고 싶지 않은 정보를 넣지 않습니다.
예를 들어, README와 폴더를 유지하는 데 대한 변명이 아니라 유용한 정보가있는 README를 사용해야합니다.
우려의 분리는 항상 좋은 일이며
.gitignore
원치 않는 파일을 무시 하기 위해를 추가 할 수 있습니다. -
이름을 지정
.gitkeep
하면 파일 이름 자체 (그리고 공유 프로젝트 및 Git 저장소의 핵심 목적 중 하나 인 다른 개발자 에게도 ) 에서이 파일이 매우 명확하고 간단 합니다.- 코드와 관련이없는 파일 (앞의 점과 이름으로 인해)
- Git과 관련된 파일
- 그것의 목적 ( 계속 )은 명확하게 언급되고 일관성 있고 의미 적으로 무시 한다는 의미에서 반대된다
양자
Laravel , Angular-CLI.gitkeep
와 같은 매우 중요한 프레임 워크에서 채택 된 접근 방식을 보았습니다 .
답변
다른 답변에서 설명했듯이 Git은 준비 영역에서 빈 디렉토리를 나타낼 수 없습니다. ( Git FAQ를 참조하십시오 .) 그러나 .gitignore
파일 이 들어있는 디렉토리가 비어있는 경우 다음을 .gitignore
통해서만 빈 디렉토리에 파일을 만들 수 있습니다 .
find . -type d -empty -exec touch {}/.gitignore \;