특정 파일을 무시하지 않고 특정 파일 만 포함하도록 git에 지시하는 방법이 있습니까? . 나는 뭔가를해야합니다 git add *.c *.cc *.f *.F

내 프로그램은 일반적으로 git 저장소에 백업하고 싶지 않은 거대한 출력 파일 (~ 1GB)을 생성합니다. 따라서 할 수있는 대신

git add .

나는 뭔가를해야합니다

git add *.c *.cc *.f *.F *.C *.h *.cu

조금 번거 롭습니다 …

디렉토리 내용을 .gitignore에 빠른 perl 스크립트를 작성한 다음 .gitinclude (또는 유사한 이름) 파일을 기반으로 파일을 제거 할 수 있다고 확신하지만 약간 해킹처럼 보입니다. 더 좋은 방법이 있습니까?



답변

나는 이것을 직접 시도 할 필요는 없었지만, TFM을 읽었을 때 부정한 패턴이 원하는 것을하는 것처럼 보입니다. 나중에 무시 된 항목으로 .gitignore의 항목을 재정의 할 수 있습니다. 따라서 다음과 같은 작업을 수행 할 수 있습니다.

*.c
!frob_*.c
!custom.c

custom.c 및 “frob_”로 시작하는 것을 제외한 모든 .c 파일을 무시하도록하려면


답변

리포지토리에 .gitignore 파일을 만들고 c 파일 만 추적하고 다른 모든 파일은 무시하고 다음 줄을 추가하십시오 ….

*
!*.c

‘*’는 모든 파일을 무시합니다

그리고! 파일을 무시하는 것을 무효화 할 것입니다 … 여기서 우리는 git에게 c 파일을 무시하지 말 것을 요구하고 있습니다 ….


답변

이를 달성하기위한 최고의 솔루션

.gitignore저장소에 파일을 만들고 파일 root만 포함 .c하려면 .gitignore파일 에 아래 줄을 추가해야 합니다

*.*
!*.c

.c디렉토리와 서브 디렉토리의 모든 파일 이 재귀 적으로 포함됩니다.

사용

*
!*.c

모든 버전의 git에서는 작동하지 않습니다.

에 테스트

자식 버전 2.12.2.windows.2


답변

디렉토리 내부의 특정 파일이 아닌 파일을 무시 해야하는 경우 다음과 같이하십시오.

# Ignore everything under "directory"
directory/*
# But don't ignore "another_directory"
!directory/another_directory
# But ignore everything under "another_directory"
directory/another_directory/*
# But don't ignore "file_to_be_staged.txt"
!directory/another_directory/file_to_be_staged.txt

답변

파티에 늦었지만 내 솔루션은 소스 파일 디렉토리와 실행 파일 및 프로그램 출력을위한 다른 디렉토리를 갖는 것입니다.

+ .git
|    (...)
+ bin
|    my_exe.exe
|    my_output.txt
+ src
     some_file.c
     some_file.h

src/내 물건 을 내 저장소 에 추가 하고 bin/완전히 무시하십시오 .