source

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

manysource 2023. 5. 5. 09:55

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

를 알 수.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

자세한 내용은 man 페이지를 참조하십시오.

원답은 다음과 같습니다.

git은 현재 이와 같은 것을 제공하지 않습니다.하지만 귀하의 질문을 보고 구글 검색을 해보니 2009년에 이 기능이 요청되어 부분적으로 구현되었습니다.스레드를 읽은 후, 저는 제대로 하는 것이 큰 일이 아닐 것이라는 것을 깨닫고 패치 작업을 시작했으며, 다음 날이나 이틀 안에 완료되기를 희망합니다.이 답변이 준비되면 업데이트하겠습니다.

업데이트: 와, 예상보다 훨씬 더 어렵더군요.의 내부git의 제외 처리는 상당히 암호화되어 있습니다.어쨌든, 여기 오늘의 업스트림에 적용되는 거의 완료된 일련의 커밋이 있습니다.master분점.테스트 스위트는 99% 완료되었지만 아직 처리를 마치지 못했습니다.--stdin아직 선택권이 없습니다.이번 주말에 처리해서 Git 메일링 리스트에 패치를 제출했으면 좋겠습니다.

그 동안, 저는 그렇게 할 수 있는 사람이라면 누구나 테스트하는 것을 환영합니다 - 제 포크에서 복제하고, 그것을 확인하세요.check-ignore분기하고 정상적으로 컴파일합니다.

업데이트 2: 완료되었습니다!최신 버전은 위와 같이 github에 있으며, 동료 검토를 위해 git 메일링 리스트에 패치 시리즈를 제출했습니다.그들이 어떻게 생각하는지 봅시다...

업데이트 3: 몇 달 동안의 해킹/패치 검토/토론/기다림 끝에 이 기능이 Git's 지점에 도달했으며 다음 릴리스(1.8.2, 2013년 3월 8일 예정)에서 사용할 수 있게 되어 기쁩니다.여기 설명서 페이지가 있습니다.휴, 생각보다 일이 너무 많았어요!

업데이트 4: 이 답변이 어떻게 발전하고 이 기능이 구현되었는지에 대한 전체 이야기에 관심이 있다면 Git Minutes 팟캐스트 32화를 확인하십시오.

업데이트 git 2.8(2016년 3월):

GIT_TRACE_EXCLUDE=1 git status

"파일 유효성 검사 방법"을 참조하십시오.

그것은 다음을 보완합니다.git check-ignore -v아래에 설명되어 있습니다.


원래 답변: 2013년 9월(Git 1.8.2, 이후 1.8.5+):

git check-ignore 1.8.5/1.9(2013년 4분기)에서 다시 개선되었습니다.

"git check-ignore다음과 같은 규칙을 따릅니다.git add그리고 "git status무시/거부 메커니즘이 이미 추적된 경로에 적용되지 않는다는 점에서.
"" 옵션을 --no-index사용하면 무시해야 경로가 실수로 인덱스에 추가되었는지 진단하는 데 사용할 수 있습니다.

https://github.com/flashydave 의 commit 8231fa6를 참조하십시오.

check-ignore는 현재방보니다줍여을법▁how다가 어떻게 되어 있는지 보여줍니다..gitignore규칙은 추적되지 않은 경로를 처리합니다.추적된 경로는 유용한 출력을 생성하지 않습니다.
이렇게 하면 경로가 먼저 인덱스에서 제거되지 않는 한 경로가 예기치 않게 추적된 이유에 대한 디버깅을 방지할 수 있습니다.git rm --cached <path>.

»--no-index에서는 인덱스에 포함된 경로에 대한 검사를 무시하도록 명령하므로 추적된 경로도 검사할 수 있습니다.

이 동작은 다음과 같은 특성에서 벗어납니다.git add그리고.git status사용 사례로 인해 사용자가 혼란을 겪지 않을 수 있습니다.

테스트 스크립트는 표준 무시와 비교하여 이 옵션을 확인하여 올바른 동작을 보장하도록 확장됩니다.


--no-index::

수표를 받을 때 색인을 보지 마세요.
사용할 수 있는 항목:

  • 예를 들어 경로가 추적된 이유를 디버그합니다. git add ..
  • 에 맞게 할 때, 전에 추경 가 패 포 개 때 을 턴 할 발 한 함 이 을 부 정 된 록 도 일 하 치 로 와 ▁develop ▁when 때git add -f.

아닐 수도 있습니다..gitignore한 무시 가 있습니다.

다음과 같은 이유로 파일이 무시될 수 있습니다.

  1. .gitignore
  2. git update-index --skip-worktree
  3. git update-index --assume-unchanged

또한 파일이 다음 위치에 있으면 에서 무시할 수 있습니다..gitignoreAND가 이미 인덱스/캐시에 준비되어 있습니다.

위에 열거된 사례를 확인하려면 다음과 같이 하십시오.

  1. 의 경 우 에 대 해의 두 에..gitignore을 비교합니다.: " ", " "

    • git check-ignore --verbose --non-matching --no-index file1 file2 file3
    • git check-ignore --verbose --non-matching file1 file2 file3
  2. git ls-files file1 file2 file3 | grep -E '^S'

  3. git ls-files file1 file2 file3 | grep -E '^[[:lower:]]'

그건 너무 어렵군요, 그냥 가명을 대주세요!

다음 별칭은 위에 나열된 모든 경우에 적용됩니다.

ignore = !"bash -c 'diff --unified=999999999 --color=always <(echo a; git check-ignore --verbose --non-matching --no-index . \"$@\") <(echo b; git check-ignore --verbose --non-matching . \"$@\")' - \"$@\" | tail -n+7; git hidden \"$@\" # Show ignore status of arguments. Files included by index are tagged with prepended '+'."
hidden = !"git ls-files -v -- \"$@\"| grep -E '^(S|[[:lower:]])' # S means update-index --skip-worktree, and lower first letter means --assume-unchanged."

코트와최종멘최."의 신에게라일부입다니에 입니다..gitconfig.

용도:

git ignore file1 file2 file3

맨 페이지에서 아무것도 찾을 수 없지만 각 상위 디렉터리에 있는 파일을 확인하여 Git-Addition할 수 있는지 확인하는 빠르고 더러운 스크립트가 있습니다.문제 파일이 들어 있는 디렉터리에서 다음과 같이 실행합니다.

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 filename
하지만 결과는 제 .gitignore 파일에 공백 줄이 있는 줄 번호였습니다.
따라서 문제는 내 파일이 로컬 .gitignore 파일이 아니라 로컬 core.excludes 파일(내 저장소에 포함되지 않음)에 의해 무시되었다는 것입니다.

솔루션:다음 명령을 사용하여 파일 위치를 검색했습니다.
git config core.excludesfile
그 다음에 열어서 문제가 있는 선을 제거하면 그걸로 끝입니다.

참조:추가 설명을 위해 여기를 볼 수도 있습니다.

▁of기▁using를 사용하는 주요 하는 것.git check-ignore -v filenameBTW)에 줄이 내 .이 모든 것을 알게 되었고, 는 다음과 같이 했습니다 ("BTW") .gitignore 파일이 .gitignore 파일을 차단했습니다.

* .sublime-project

일례로방금 새 줄을 뺐어요, 그리고 voila!고쳐졌어요.

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