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.