2011-11-23 2 views
42

명시 적 확장자를주지 않고 특정 또는/bin 디렉토리에 배치하지 않고 어떻게 Linux 실행 파일을 .gitignore에 추가합니까? 대부분은 ".c"확장자없이 컴파일 된 C 파일과 동일하게 명명됩니다..gitignore에 Linux 실행 파일을 추가하는 방법은 무엇입니까?

+0

이 병합 할 수 http://stackoverflow.com/questions/5711120/gitignore-without-binary-files 의 중복이 꽤 많이 있습니다. –

+0

아니요, 실행 파일과 이진 파일간에 차이가 있습니다. 실행 가능한 스크립트와 바이너리 파일을 모두 무시할 필요가 있습니다. 나는이 질문이 중복 된 것이라고 생각하지 않는다. 이 * 그들 중 많은 것을 * 때문에 나는이 질문에 우연히 – Alexander

답변

10

나는 그것을 프로젝트 .gitignore에 명시 적으로 넣을 것이다. 우아하지는 않지만 프로젝트에 이없고 그 중 많은 수가이라고 생각합니다.

+3

이유는 정확히이다. –

3

현재 디렉토리의 모든 실행 파일에서 .gitignore 하나의 이동에 대한 차이를 생성하는 방법 :

find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore - 

이 사용자가 해당 파일을 수동으로 변경 잃지 말고 의미 DIFF를 생성합니다. 이 경우 귀하의 .gitignore 파일이 이미 정렬되었다고 가정합니다. sed 부분은 find가 생성하는 선도 인 ./을 제거합니다.

실행 파일 만 자동으로 무시하는 방법이 없으므로 항상 파일을 수동으로 관리해야합니다.

26

소스 코드 파일을 모두 무시할 수 있습니까? 예를 들어

는 :

* 
!*.c 
!Makefile 
3

나는 자동으로 .gitignore에 ELF 실행 파일을 추가 할 수있는 스크립트를 썼다.

git-ignore-elf :

#!/bin/sh 
set -eu 
cd "$(git rev-parse --show-toplevel)" 
file=.gitignore 
new=$file.new.$$ 
(
if [ -e "$file" ]; then 
    cat "$file" 
fi 
find . -name .git -prune -o -type f ! -name '*.o' ! -name '*.so' \ 
    -print0 | xargs -0 file | grep ': *ELF ' | sed 's/:.*//' | 
sed 's,^./,,' 
) | perl -ne 'print if !$already{$_}++' >"$new" 
mv "$new" "$file" 

특징 :

  • 이 (! misfeature 수 있습니다)
  • 는 ELF 파일을 제외 .o 인 및 .so는 파일을 무시 최상위 폴더에서 찾고 시작 일반 규칙으로 무시할 수 있습니다.
  • 은 .gitignore의 기존 항목을 복제하지 않고 보존합니다.

이 단일 스크립트 버전은 여기에 있습니다 : http://sam.nipl.net/b/git-ignore-elf-1 여기

가 (발견 엘프, uniqo을 자식 루트) 같은 장소에서 다른 스크립트에 따라 더 모듈 버전입니다 : http://sam.nipl.net/b/git-ignore-elf

+0

파이썬과 파일을 사용하여 유사한 응답이 (1), 여기 : http://stackoverflow.com/a/19749478/218294 –

4

대부분의 개발자는 일반적으로 프로젝트에 실제 빌드 프로세스가 실행되는 디렉토리 인 build 디렉토리를 가지고 있습니다. 그래서, 모든 실행, .o, .so, .a 등이있다이 빌드 디렉토리는 .gitignore에 추가됩니다.