특정 파일을 무시하지 않고 특정 파일 만 포함하도록 git에 지시하는 방법이 있습니까?


165

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

git add .

나는 뭔가를해야합니다

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

조금 번거 롭습니다 ...

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

답변:


231

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

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

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


20
감사합니다. TED는 효과가있었습니다. 내가해야 할 일은 *로 .gitignore 파일을 시작한 다음 포함 된 모든 파일 패턴을 느낌표로 나열하는 것입니다.
Daisy Sophia Hollman

8
폴더는 어떻습니까? 규칙을 무효화하여 폴더와 파일을 포함하는 방법을 찾을 수 없습니다.
Marcio Cruz


2
아주 좋아요 나는 이것을 사용하여 vimrc와 bashrc 같은 것들을 내 홈 폴더에 저장하고있다
Martin Capodici

1
하나의 특정 폴더를 포함하려는 경우 @uzsolt가 작동하지 않습니다. stackoverflow.com/questions/987142/…를
DiCaprio

73

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

*
!*.c

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

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


.*숨겨진 파일 도 필요 합니까?
trusktr

2
은 ( *는)에 대한 와일드 카드 .이므로 숨겨진 파일도 무시되지만 끝나는 모든 숨겨진 파일 .c이 포함됩니다.
Rohmer

2
이 방법을 사용하면 하위 폴더의 파일도 무시된다고 생각합니다. 자세한 내용은 이것을 확인하십시오 stackoverflow.com/a/11853075/739436
Stelian

1
난 단지 내 .bashrc에와 .bash_history 파일 예를 들어 추적에 내 홈 디렉토리에이 방법을 사용 *하여 다음 !.bash*.gitignore 파일
user5359531

1
*.*Windows에서 필요할 수도 있습니다 -@Smaranjit Maiti의 답변 참조
Martin Capodici

13

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

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

*.*
!*.c

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

사용

*
!*.c

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

에 테스트

자식 버전 2.12.2.windows.2


2
예, 같은 문제가 *있었고 사용해야했습니다 *.*. 이것은 gitbash 및 git 버전 2.9.0.windows.1을 사용하는 Windows에 있습니다.
Martin Capodici

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

0

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.