내 파일을 무시하는 gitignore 규칙 설명
를 알 수.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 메일링 리스트에 패치를 제출했으면 좋겠습니다.
그 동안, 저는 그렇게 할 수 있는 사람이라면 누구나 테스트하는 것을 환영합니다 - 제 포크에서 복제하고, 그것을 확인하세요.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
한 무시 가 있습니다.
다음과 같은 이유로 파일이 무시될 수 있습니다.
.gitignore
git update-index --skip-worktree
git update-index --assume-unchanged
또한 파일이 다음 위치에 있으면 에서 무시할 수 있습니다..gitignore
AND가 이미 인덱스/캐시에 준비되어 있습니다.
위에 열거된 사례를 확인하려면 다음과 같이 하십시오.
의 경 우 에 대 해의 두 에.
.gitignore
을 비교합니다.: " ", " "git check-ignore --verbose --non-matching --no-index file1 file2 file3
git check-ignore --verbose --non-matching file1 file2 file3
git ls-files file1 file2 file3 | grep -E '^S'
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_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
하지만 결과는 제 .gitignore 파일에 공백 줄이 있는 줄 번호였습니다.
따라서 문제는 내 파일이 로컬 .gitignore 파일이 아니라 로컬 core.excludes 파일(내 저장소에 포함되지 않음)에 의해 무시되었다는 것입니다.
솔루션:다음 명령을 사용하여 파일 위치를 검색했습니다.git config core.excludesfile
그 다음에 열어서 문제가 있는 선을 제거하면 그걸로 끝입니다.
참조:추가 설명을 위해 여기를 볼 수도 있습니다.
▁of기▁using를 사용하는 주요 하는 것.git check-ignore -v filename
BTW)에 줄이 내 .이 모든 것을 알게 되었고, 는 다음과 같이 했습니다 ("BTW") .gitignore 파일이 .gitignore 파일을 차단했습니다.
* .sublime-project
일례로방금 새 줄을 뺐어요, 그리고 voila!고쳐졌어요.
언급URL : https://stackoverflow.com/questions/12144633/explain-which-gitignore-rule-is-ignoring-my-file
'source' 카테고리의 다른 글
파이썬 3에서 int()와 floor()의 차이점은 무엇입니까? (0) | 2023.05.05 |
---|---|
내부 vs.개인 액세스 수정자 (0) | 2023.05.05 |
기록에 보관하지 않고 명령 실행 (0) | 2023.05.05 |
Bash 명령 프롬프트에 git 분기 추가 (0) | 2023.05.05 |
어떻게 하면 C에서 int를 문자열로 변환할 수 있습니까? (0) | 2023.05.05 |