Programing

내 파일을 무시하는 gitignore 규칙을 설명하십시오.

lottogame 2020. 3. 20. 08:12
반응형

내 파일을 무시하는 gitignore 규칙을 설명하십시오.


왜 git에 의해 일부 파일이 무시되는지 볼 수있는 방법이 있습니까 (즉, .gitignore파일의 어떤 규칙으로 인해 파일이 무시되는지 )?

수백 개의 폴더와 수십 개의 .gitignore파일 이있는이 (또는 훨씬 더 복잡한 시나리오)가 있다고 상상해보십시오 .

/
-.gitignore
-folder/
    -.gitignore
    -subfolder/
              -.gitignore
              -file.txt

내가 git add folder/subfolder/file.txtgit을 실행하면 무시되고 있다고 불평 할 수 있습니다.

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 masterbranch에 도달 했으며 다음 릴리스 (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 addgit status그 사용 케이스는 사용자의 혼란을 야기 할 가능성이있다.

올바른 동작을 보장하기 위해 표준 무시와 비교하여이 옵션을 확인하기 위해 테스트 스크립트가 기능이 보강되었습니다.


--no-index::

점검을 수행 할 때 색인을 보지 마십시오.
이것은 사용될 수 있습니다 :

  • 경로가 예를 들어 추적되고 git add .사용자가 예상 한 규칙에 의해 무시되지 않은 이유를 디버그
  • 이전에 추가 된 경로와 일치하는 부정을 포함하여 패턴을 개발할 때 git add -f.

맨 페이지에서 아무것도 찾을 수 없지만 여기에는 각 부모 디렉토리에서 파일을 검사하여 git add 할 수 있는지 확인하는 빠르고 더러운 스크립트가 있습니다. 문제점 파일이있는 디렉토리에서 다음과 같이 실행하십시오.

test-add.sh STOP_DIR FILENAME

여기서 STOP_DIRGit 프로젝트의 최상위 디렉토리이며 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 filenameBTW 덕분 에 사용의 주요 대답에 추가하기 위해 와일드 카드 다음에 줄 바꿈이 있기 때문에 .gitignore 파일이 모든 것을 차단하고 있음을 알았습니다.

* .sublime-project

예로서. 방금 줄 바꿈을 제거했습니다. 수정되었습니다.

참고 URL : https://stackoverflow.com/questions/12144633/explain-which-gitignore-rule-is-ignoring-my-file

반응형