programing

git가 .gitignore 파일에 없는 파일을 무시하는 이유는 무엇입니까?

megabox 2023. 10. 16. 21:40
반응형

git가 .gitignore 파일에 없는 파일을 무시하는 이유는 무엇입니까?

하는 깃 저장소를 하는 깃 은.gitignore다입니다.config.php파일입니다. 제가 찾을 수 없는 전역 무시 파일이 있나요?지금 파일을 추가할 파일을 지정해야 하는데, 경고 메시지가 나타납니다.

다음 경로는 .gitignore 파일 중 하나에서 무시됩니다.

의 의 ~/.gitconfig파일은 나의 이메일 주소일 뿐입니다.

git check-ignore

명령을 사용하여 gitignore 파일(파일 제외)을 디버깅합니다.

예를 들어,

$ git check-ignore -v config.php
.gitignore:2:src    config.php

상기 출력은 주어진 각 경로명(선 포함)에 대한 매칭 패턴(있는 경우)에 대한 상세 정보입니다.

그래서 아마도 당신의 파일 확장자가 무시되는 것이 아니라 전체 디렉토리가 무시됩니다.

반환되는 형식은 다음과 같습니다.

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

하여 합니다를 합니다..gitignore사용자 HOME 및 리포지토리 폴더에서:

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

git add -f이를 통해 무시된 파일을 추가할 수 있습니다.

:man gitignore,man git-check-ignore자세한 사항은

구문

git check- ignore [options] 경로 이름...

git 체크 ignore [options] --stdin

git 구성에 core.excludes 파일이 포함될 수 있으며 이 파일은 무시되는 추가 패턴이 있는 파일의 경로입니다.문제가 있는 gitrepo에서 다음을 실행하여 이러한 구성이 있는지 확인할 수 있습니다.

git config core.excludesfile

파일 경로를 인쇄하는 경우, 자세한 내용을 보려면 해당 파일의 내용을 확인하십시오.

제 경우에는 '아이콘?' 패턴을 무시한 이전 버전의 박센을 통해 깃을 설치했는데, 이 질문에서 언급된 폴더 아이콘에 대한 경고를 받았습니다(나는 케이스에 민감하지 않은 파일 시스템에 있어서 아이콘이 아이콘과 일치하는 이유입니다).

이 내용을 확인해 보십시오.

  1. 다른 .gitignore 파일을 찾아보셨나요? 많은 파일이 있을 수 있습니다.

  2. 또한 REPO/.git/config에서 확인할 수 있습니다.

  3. Repo 제외 로컬 단위 repo 규칙을 repo에 있는 .git/info/exclude 파일에 추가할 수 있습니다.이러한 규칙은 레포와 커밋되지 않으므로 다른 규칙과 공유되지 않습니다.이 메서드는 편집자가 만든 파일과 같이 다른 사용자가 생성하지 않을 것으로 예상되는 로컬에서 생성된 파일에 사용할 수 있습니다.

같은 문제가 있었습니다. git에서 디렉터리를 무시하고 있었는데 다음 오류가 발생했습니다.

➭ git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added

제 제 의 것을 되었습니다.~/.gitignore_global:

TAGS

합니다.app/views/admin/tags하였습니다. 글로벌 gitignore 파일에 선행 슬래시를 추가하여 수정했습니다.

/TAGS

그리고 git은 다시 내 디렉토리를 추적하기 시작했습니다.

저는 실수로 ~/.gitignore_global 파일에 와일드카드가 있었습니다.거기서 확인해 볼까요?

또 는 B 를 이라는 가 B 있었습니다..git내 프로젝트 디렉토리 A 아래에 중첩된 저장소(하위 모듈로는 아님).저는 B를 변경했고, bonaid submodule로 만들고 싶었습니다.저는 git A가 자체 저장소를 포함하고 있기 때문에 자동으로 B를 무시하고 있었다고 생각합니다(하위 모듈이 없는 중첩 git 저장소 참조?).나는 B 폴더의 이름을 바꾸고, 그것을 서브모듈로 다시 복제하려고 했고, 그것은 오해의 소지가 있는 ".gitignore에 의해 무시됨" 오류 메시지를 나에게 가져다 주고 있었습니다.해결책은 삭제하는 것이었습니다..gitB

제 경우에는 문제를 일으킨 원인이 앞으로 꺾인 것이었습니다.

작업 안 함

/srv/bootstrap/

일하다.

srv/bootstrap/

아닐 수도 있습니다..gitignore:skip-worktree그리고.assume-unchanged

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

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

이 에서 UN 에 할 수 있습니다..gitignore인덱스/캐시에 이미 스테이징되어 있습니다.

위에 열거된 사례를 확인하는 방법:

  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

저도 당신과 똑같은 문제를 겪고 있었습니다.당신이 받은 유일한 답변은 확인해야 할 곳이 몇 군데 있는데, 그 중 아무도 나를 위해 문제를 해결해주지 않았고, 당신의 의견을 보면 나도 당신을 위해 생각하지 않습니다.디렉터리 트리 아래에 숨긴 다른 .gitignore 파일이 없습니다. .git/config에는 아무것도, .git/ingore/exclude에는 아무것도 없습니다.

아직도 문제가 있다면답변을 확인해 보세요.그것은 나에게 그 문제를 해결해 주었습니다.

기본적으로 ~/.gitignore 파일을 확인합니다.저의 이름은 ~/.gitignore_global입니다.언제 만들어졌는지는 모르겠지만(확실히 만들어내지 못했습니다), 처음 설치할 때 다양한 git 설정을 많이 해봤기 때문에 하나는 거기에 넣었을 것입니다.

그의 대답이 당신에게도 도움이 되기를 바랍니다!

git에서 이 오류 메시지를 받는 또 다른 이유는 실행할 때입니다.git submodule add명령은 이전 git 명령이 충돌하여 잠금 파일을 남긴 상태에서 수행됩니다(예를 들어 git 명령이 포함된 사용자 지정 스크립트를 사용할 때 충돌을 주목하지 않았을 때 발생할 수 있습니다).

명령을 실행하는 경우git commit그 대신에, 어떤 조건도 변하지 않았습니다.)git submodule add계속 소리칠 거예요.gitignore파일 탓), 대신 또 다른 오류 보고서가 나타납니다.

$ git commit -a
fatal: Unable to create '..../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

그리고 실제로 잠금 파일을 삭제합니다.

rm .git/index.lock

문제를 해결합니다.(이것은 git 버전 2.1.0.9736에서 발생합니다.추후 git 릴리즈에서 수정될 수 있습니다.)

폴더에 대한 권한이 있는지 확인합니다.방금 이 일을 알게 되었는데 제가 단말기에 로그인한 사용자가 아닌 www-data 사용자가 폴더를 소유하고 있었기 때문입니다.

한 가지 더 말하자면, 사용자가 있는 디렉토리에 쓰기 또는 실행을 위해 루트 액세스가 필요한 경우 루트 사용자인지 확인합니다.실제로 서브모듈을 추가하려고 하는데 git에서 복제 중인 경로가 git 무시 파일에 의해 무시되고 있다고 계속 불평하는 이상한 오류가 발생했습니다.그리고 root 사용자로 변경하여 서브모듈 add를 다시 실행해보았는데 아무 문제가 없었습니다.

확인도 부탁드립니다.~/.gitignore그리고.~/.gitignore_global일부 Git 클라이언트(예: Mac OS X의 Atlassian SourceTree)에 의해 생성될 수 있습니다.

확인합니다..gitignore파일 자체를 무시하는 것이 아닙니다.일반적인 실수는 a를 추가하는 것입니다.*배에 다스리다.gitignore현재 폴더에 있는 모든 파일을 무시하는 파일입니다.입니다에 입니다..gitignore:

*
!.gitignore

됩니다를 됩니다..gitignore.

당신이 올바른 지점에 있는지 확인합니다.

언급URL : https://stackoverflow.com/questions/9436405/why-is-git-is-ignoring-files-that-arent-in-the-gitignore-file

반응형