gitignore와 .gitkeep의 차이점은 무엇입니까?


1926

의 차이점은 무엇입니까 .gitignore와는 .gitkeep? 그것들은 다른 이름을 가진 동일한 것입니까, 아니면 둘 다 다른 기능을합니까?

에 대한 많은 문서를 찾을 수없는 것 같습니다 .gitkeep.

답변:


3437

.gitkeep Git의 기능이 아니기 때문에 문서화되어 있지 않습니다.

힘내 완전히 빈 디렉토리를 추가 할 수 없습니다 . Git에서 빈 디렉토리를 추적하려는 사람들은이 디렉토리에서 호출 .gitkeep되는 파일을 넣는 규칙을 만들었습니다 . 파일은 무엇이든 호출 될 수 있습니다. Git은이 이름에 특별한 의미를 부여하지 않습니다.

.gitignore빈 디렉토리에 파일을 추가하여 파일을 추적 하는 경쟁 규칙이 있지만 일부 사람들은 빈 디렉토리를 무시하지 않고 유지하는 것이 목표이기 때문에 혼동되는 것으로 간주합니다. .gitignore추적되지 않은 파일을 찾을 때 Git에서 무시해야하는 파일을 나열하는 데에도 사용됩니다.


414
README하위 디렉토리가 사용될 대상에 대한 약간의 정보가 들어있는 빈 서브 디렉토리에 파일 을 넣는 것이 더 나은 솔루션이 아닙니까? .gitkeep실제로 git의 일부가 아닌 파일을 갖는 것은 혼란스러워 보입니다 .
tamouse

423
@tamouse 여러 번 빈 디렉토리의 경로 (예 : 폴더 이름)는 목적을 표현하기에 충분합니다 (예 : 템플릿 / 캐시, 업로드 / 엄지 손가락 등). 이 경우 각각에 readme를 넣는 것은 중복 된 느낌입니다.
Halil Özgür

16
빈 디렉토리를 추적하려는 사람들은 README에서 디렉토리를 작성하거나 빌드 도구를 사용하거나 디렉토리가 존재해야하는 도구를 사용하여 디렉토리를 작성해야 함을 표시해야합니다. /

32
@tamouse, @omouse : .gitignore두 줄로 된 파일 : *그리고 !.gitignore무슨 일이 일어나고 있는지 명확하게 전달합니다. 더 정교해야 할 경우 # 구문을 사용하여 파일 맨 위에 주석을 추가하십시오 .
Droogans

63
git은 빈 폴더를 추적하지 않는 유일한 소스 제어 시스템이 아니기 때문에 널리 사용되는 Rails 프레임 워크는 빈 폴더를 보존하는 .keep대신 파일을 사용하여이 규칙을 약간 변경했음을 주목할 가치가 있습니다 .gitkeep. 더 자세한 사항은 여기에 : github.com/rails/rails/issues/2800
클라우디오 Floreani

330

.gitkeep자리 표시 자일뿐입니다. 더미 파일이므로 Git은 디렉토리 만 잊어 버리지 않습니다. Git은 파일 만 추적하기 때문입니다.


빈 디렉토리를 원하고 Git에 대해 '깨끗한'상태를 유지 .gitignore하려면 다음 행을 포함하여 다음을 포함하십시오.

# .gitignore sample
###################

# Ignore all files in this dir...
*

# ... except for this one.
!.gitignore

Git에 한 가지 유형의 파일 만 표시되도록하려면 .gitignore 및 모든 .txt파일을 제외한 모든 파일 을 필터링하는 방법에 대한 예제가 있습니다.

# .gitignore to keep just .txt files
###################################

# Filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

( '#'는 주석을 나타냅니다.)


3
나는이 연습을 좋아한다. 이 디렉토리에 소스 코드가 있다면 .gitkeep이 필요하지 않으며 일반적으로 temp / cache / user 컨텐츠는 테스트 중 생성되어 어쨌든 해당 파일을 .gitignore해야하는 원인이됩니다.
chrisan

1
왜 당신 !은 앞에 필요 .gitignore합니까? 그 점을 탈출하기 위해서입니까?

7
@Will-아니요 !. 일반적으로 프로그래밍에서와 같이 다음 부분을 무효화합니다.
sjas

3
!.gitignoregit ignore 파일 을 넣을 필요가 없습니다 . 파일을 추가 한 다음 편집하거나, 적절한 내용 ( "*"을 사용하여 모든 내용을 무시하거나 단순히 폴더가 존재하는지 확인하지 않는 것)으로 추가 하십시오 .
AD7six

13
링크에서 : Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked.------ 그렇지 않은 경우, 강제로 추가하지 않으면 잊어 버릴 수 있습니다. 사소한 경우에는 문제가 없지만 더 큰 파일이면 화를 낼 수 있습니다. 를 사용 !.gitignore하면 발로 자신을 쏠 수 없습니다. 나는 과거에 자신을 태워서 그것을 선호합니다.
sjas

125
.gitignore

git은 저장소에서 파일을 추가하거나 업데이트하지 않는 디렉토리의 파일 목록을 구성하는 텍스트 파일입니다.

.gitkeep

Git은 저장소에 빈 디렉토리를 제거하거나 추가하지 않기 때문에 .gitkeep은 저장소에 빈 디렉토리를 유지하는 일종의 해킹입니다 (공식적으로 Git의 일부로 명명되지 않았다고 생각합니다).

touch /path/to/emptydirectory/.gitkeep파일을 추가하기 만하면 Git은 이제이 디렉토리를 리포지토리에서 유지할 수 있습니다.


18
.gitignore매번 모든 폴더의 전체 경로를 지정하지 않으려면 원하는만큼을 가질 수 있습니다 .
sjas

1
빈 디렉토리 목록을 .gitkeep파일 에 언급하려고 시도 하지만 빈 디렉토리를 추적하지 않으며 .gitkeep파일이 존재하는 폴더 만 추적 합니다. 왜 그래?
Pardeep Jain

2
.gitkeep은 .gitignore처럼 작동하지 않습니다. 유지할 디렉토리 목록이 아닙니다. 그것은 당신이 유지하려는 디렉토리에있는 빈 파일 일뿐입니다. .keep 등 원하는 이름을 지정할 수 있습니다. 따라서 / foo / bar와 같은 디렉토리를 가질 수 있으며 gitkeep 파일은 /foo/bar/.gitkeep입니다.
Jim Munro

@ sjas 여러 번 .gitignore사용하면 매번 모든 폴더의 전체 경로를 지정 하지 않아도 됩니다. 나는 명백한 것을 놓치고 있다고 생각합니다.
Willwsharp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.