내 파일을 무시하는 gitignore 규칙을 설명하십시오.
왜 git에 의해 일부 파일이 무시되는지 볼 수있는 방법이 있습니까 (즉, .gitignore
파일의 어떤 규칙으로 인해 파일이 무시되는지 )?
수백 개의 폴더와 수십 개의 .gitignore
파일 이있는이 (또는 훨씬 더 복잡한 시나리오)가 있다고 상상해보십시오 .
/
-.gitignore
-folder/
-.gitignore
-subfolder/
-.gitignore
-file.txt
내가 git add folder/subfolder/file.txt
git을 실행하면 무시되고 있다고 불평 할 수 있습니다.
The following paths are ignored by one of your .gitignore files:
folder/subfolder/file.txt
Use -f if you really want to add them.
.gitignore
이 파일을 무시하고 규칙을 표시 할 수있는 규칙 이 가능한지 아는 방법 이 있습니까? 처럼:
The following paths are ignored by your folder/.gitignore file (line 12: *.txt)
folder/subfolder/file.txt
Use -f if you really want to add them.
아니면 그냥 :
$ git why-is-ignored folder/subfolder/file.txt
folder/.gitignore:12:*.txt
git check-ignore -v filename
자세한 내용 은 매뉴얼 페이지 를 참조하십시오.
원래 답변은 다음과 같습니다.
git은 현재 이와 같은 것을 제공하지 않습니다. 그러나 귀하의 질문을 본 후 인터넷 검색을 수행하여 2009 년 에이 기능이 요청되어 부분적으로 구현 되었음을 알았습니다 . 스레드를 읽은 후에는 제대로 수행하기에는 너무 많은 작업이 아니라는 것을 깨달았으므로 패치 작업을 시작했으며 다음 날 이틀 안에 완료되기를 바랍니다. 준비가되면이 답변을 업데이트하겠습니다.
업데이트 : 와우, 그것은 내가 예상했던 것보다 훨씬 어려웠습니다. git
제외 처리 의 내부 는 매우 비밀입니다. 어쨌든, 오늘날의 업스트림 브랜치에 적용 되는 거의 완성 된 일련의 커밋 이 있습니다 master
. 테스트 스위트는 99 % 완료되었지만 --stdin
아직 옵션 처리를 완료하지 않았습니다. 이번 주말에 이것을 관리하고 패치를 git 메일 링리스트에 제출하기를 바랍니다.
그동안 내 git
포크 에서 복제 하고 check-ignore
지점을 확인한 다음 정상적으로 컴파일하면됩니다.
업데이트 2 : 끝났습니다! 최신 버전은 위의 github에 있으며 피어 리뷰를 위해 패치 시리즈를 git 메일 링리스트 에 제출했습니다. 그들이 어떻게 생각하는지 보자 ...
업데이트 3 : 몇 달 동안 해킹 / 패치 리뷰 / 토론 / 대기 후이 기능이 현재 git 's master
branch에 도달 했으며 다음 릴리스 (1.8.2, 8 번째 예상)에서 사용할 수 있음을 기쁘게 생각합니다 2013 년 3 월). check-ignore
매뉴얼 페이지 는 다음과 같습니다 . 휴, 그것은 내가 예상했던 것보다 더 많은 일이었습니다!
업데이트 4 : 이 답변이 어떻게 진화하고 기능이 구현되었는지에 대한 전체 기사에 관심이 있다면 GitMinutes 팟 캐스트의 에피소드 # 32를 확인하십시오 .
자식 2.8 업데이트 (2016 년 3 월) :
GIT_TRACE_EXCLUDE=1 git status
"참조 유효성 검사에 대한 방법 .gitignore
파일을 "
이는 git check-ignore -v
아래 에 설명 된 내용을 보완 합니다.
원래 답변 : 2013 년 9 월 (git 1.8.2, 1.8.5 이상) :
git check-ignore
자식 1.8.5 / 1.9 에서 다시 개선되었습니다 (Q4 2013) :
"
git check-ignore
" 는 무시 / 제외 메커니즘이 이미 추적 된 경로에 적용되지 않는다는 점에서 "git add
"및 " "와 동일한 규칙을 따릅니다git status
.
"--no-index
"옵션을 사용하면 무시해야 할 경로가 실수로 색인에 추가 된 것을 진단하는 데 사용할 수 있습니다 .
참조 8231fa6 커밋 에서 https://github.com/flashydave :
check-ignore
현재.gitignore
규칙에서 추적되지 않은 경로를 처리 하는 방법을 보여줍니다 . 추적 된 경로는 유용한 출력을 생성하지 않습니다.
이렇게하면 경로에서 인덱스를 먼저 제거하지 않으면 경로가 예기치 않게 추적 된 이유를 디버깅 할 수 없습니다git rm --cached <path>
.이 옵션
--no-index
은 색인에있는 경로에 대한 검사를 생략하도록 명령에 지시하므로 추적 경로도 검사 할 수 있습니다.이 동작의 특성에서 벗어나는 동안
git add
과git status
그 사용 케이스는 사용자의 혼란을 야기 할 가능성이있다.올바른 동작을 보장하기 위해 표준 무시와 비교하여이 옵션을 확인하기 위해 테스트 스크립트가 기능이 보강되었습니다.
--no-index::
점검을 수행 할 때 색인을 보지 마십시오.
이것은 사용될 수 있습니다 :
- 경로가 예를 들어 추적되고
git add .
사용자가 예상 한 규칙에 의해 무시되지 않은 이유를 디버그- 이전에 추가 된 경로와 일치하는 부정을 포함하여 패턴을 개발할 때
git add -f
.
맨 페이지에서 아무것도 찾을 수 없지만 여기에는 각 부모 디렉토리에서 파일을 검사하여 git add 할 수 있는지 확인하는 빠르고 더러운 스크립트가 있습니다. 문제점 파일이있는 디렉토리에서 다음과 같이 실행하십시오.
test-add.sh STOP_DIR FILENAME
여기서 STOP_DIR
Git 프로젝트의 최상위 디렉토리이며 FILENAME
경로가없는 문제 파일 이름입니다. 계층의 각 레벨에서 동일한 이름의 빈 파일을 작성하고 (존재하지 않는 경우) git add -n
추가 할 수 있는지 확인합니다 (자체 정리 후). 다음과 같이 출력됩니다.
FAILED: /dir/1/2/3
SUCCEEDED: /dir/1/2
스크립트 :
#!/usr/bin/env bash
TOP=$1
FILE=$2
DIR=`pwd`
while : ; do
TMPFILE=1
F=$DIR/$FILE
if [ ! -f $F ]; then
touch $F
TMPFILE=0
fi
git add -n $F >/dev/null 2>&1
if [ $? = 0 ]; then
echo "SUCCEEDED: $DIR"
else
echo "FAILED: $DIR"
fi
if [ $TMPFILE = 0 ]; then
rm $F
fi
DIR=${DIR%/*}
if [ "$DIR" \< "$TOP" ]; then
break
fi
done
git check-ignore -v filename
BTW 덕분 에 사용의 주요 대답에 추가하기 위해 와일드 카드 다음에 줄 바꿈이 있기 때문에 .gitignore 파일이 모든 것을 차단하고 있음을 알았습니다.
* .sublime-project
예로서. 방금 줄 바꿈을 제거했습니다. 수정되었습니다.
참고 URL : https://stackoverflow.com/questions/12144633/explain-which-gitignore-rule-is-ignoring-my-file
'Programing' 카테고리의 다른 글
단위 테스트를 위해 개인용 메소드를 공개하는 것은 좋은 생각입니까? (0) | 2020.03.20 |
---|---|
이클립스의 말 :“사용중인 작업 공간을 만들거나 만들 수없는 경우 다른 작업 공간을 선택하십시오.” (0) | 2020.03.20 |
Objective-C가 @property 속성을 선언했습니다 (비 원자, 복사, 강, 약) (0) | 2020.03.20 |
가운데에 하나의 유연한 열이있는 두 개의 고정 너비 열을 어떻게 가질 수 있습니까? (0) | 2020.03.20 |
C ++ 함수에 2D 배열 전달 (0) | 2020.03.20 |