Git 전역 무시 작동하지 않음


84

파일을 생성하여 .gitignore_globalgit 설치 디렉토리에 넣었습니다. 명령을 실행할 때 :

git config --global core.excludesfile ~/.gitignore

무시 파일의 규칙이 내 커밋에 적용되지 않습니다.

파일 이름을 바꾸고 .gitignore프로젝트 루트에 넣으면 규칙이 적용됩니다.

여기서 무엇이 잘못 되었습니까?


1
@Jarrod`~ / .gitignore_global`은 OP가 의미하는 바 였고 게시물의 오타 였지만 그는 내 대답을 수락했지만 편집이 좋지 않습니다
CharlesB

이것이 귀하의 질문에 대답합니까? Global Git ignore
codeforester

답변:


169

다음을 수행해야 할 수도 있습니다.

git config --global core.excludesfile ~/.gitignore_global 

그리고 커피를 마시기 위해.


그게 내가 의미 한 바에요. 내가 복사 한 것은 무엇이 효과가 있는지보기 위해 엉망으로 만든 것입니다.
user880954

커피와 치아에 적합합니다. .gitignore_global이 $ HOME에 있습니까? git install 디렉토리에 설치했다고 말했습니까?
CharlesB 2011 년

왜 여전히 여기에서 작동하지 않는지 아십니까? 건너 뛰고 싶은 .7z 파일이 있습니다. 다음 규칙을 추가했습니다. gist.github.com/octocat/9257657 ; 그리고 파일을 변경 한 후에도 .git에 버전이 지정됩니다. :(
Aquarius Power

3
예, gitignore파일은 이전에 추가 된 파일이 아닌 추적되지 않은 파일에 대해서만 작동합니다
CharlesB

1
내가 방금 알아 차린 또 다른 점은 .gitignore_global 파일의 행 패턴이 프로젝트의 기본 디렉토리 경로와 정확히 일치해야한다는 것입니다. 예를 들어 프로젝트 이름이 myProject / sql / init에 SQL 코드를 생성하는 myProject이고 myProject / sql / init / *. sql을 무시하려는 경우 항목은 * / sql / init / 여야합니다. 마찬가지로 myProject / msg / dao / 및 myProject / dao에서 생성 된 DAO / DTO 코드의 경우 dao 하위 디렉터리의 모든 파일을 포착하려면 두 개의 항목이 있어야합니다. * / * / dao / 및 * / dao /를 추가해야합니다.
Keith Kibler

82

내가 이것에 칩을 넣을 것이라고 생각했습니다. 전역 무시 파일이 작동하지 않는 것처럼 보이는 또 다른 이유가 있습니다. 이전 답변에서 다루지 않았다고 생각합니다. 그것은 너무나도 명백해서- 물론 -놓치기가 매우 쉽습니다.

즉, git 은 새 파일 만 무시합니다 . 파일이 이미 git에 의해 추적되고 있다면 물론 git은 그것을 무시하지 않을 것입니다! 따라서 any gitignore또는 exclude파일의 모든 패턴이 적용되지 않습니다 .

말이 되네요. 왜 git은 이미 추적중인 파일의 수정 사항을 무시하고 싶습니까? 파일을 무시하려면 먼저 git에게 추적하지 말라고 지시 한 다음 매뉴얼에 설명 된대로 무시해야합니다. 파일 추적 해제 방법에 대한 정보는 이 답변을 참조하십시오 .

이 모든 것이 저에게 묻습니다. 추적 된 파일의 변경 사항을 무시할 수 있습니까? 다시 말하지만 git은 제공합니다. 이 대답; Git : Ignore tracked files 는 다음 명령을 제공합니다 ( file무시할 파일로 대체 ).

git update-index --assume-unchanged file

마지막으로 git ignore 디버깅에 대한 추가 정보가 있습니다.

gitignore (5) 매뉴얼 페이지는 우리에게 알려줍니다 :

사용자가 모든 상황에서 Git이 무시하기를 원하는 패턴 (예 : 사용자가 선택한 편집기가 생성 한 백업 또는 임시 파일)은 일반적으로 사용자의 ~ / .gitconfig에있는 core.excludesfile에 지정된 파일로 이동합니다. 기본값은 $ XDG_CONFIG_HOME / git / ignore입니다. $ XDG_CONFIG_HOME이 설정되지 않았거나 비어 있으면 대신 $ HOME / .config / git / ignore가 사용됩니다.

따라서 이것은 새로운 것이며 이전에 ~/.gitignore_global언급 한 것을 대체합니다 .

다음으로, 이것은 정말 유용합니다. 1.8.2부터는 훌륭한 디버깅 도구가 있습니다. 보세요 :

Git이 더 잘 무시하는 법을 배웁니다-1.8.2의 새로운 기능

이것은 새 check-ignore플래그를 사용하여 git이 패턴을 성공적으로 무시하는지 확인하는 방법을 보여줍니다.

git check-ignore bin/a.dll --verbose


8
git update-index --assume-unchanged file내가 찾던 바로 그 것이었다, 고마워!
Jai

14

다음 global core.excludesfile과 같이 정의했을 때 발견했습니다 .

git config --global core.excludesfile $HOME/.config/git/ignore

작동하지 않았습니다. 다음 $HOME과 같이 변수를 사용하지 않도록 변경합니다 .

git config --global core.excludesfile ~/.config/git/ignore

즉시 작동하기 시작했습니다. 이것이 다른 사람에게 도움이되기를 바랍니다.

참고 :

$ git --version
git version 1.7.10.2 (Apple Git-33)

나도 관찰했다. 문서를 훑어 봤지만 아무것도 찾지 못했습니다. .gitignore (디렉터리 별) 및 .git / info / exclude 외에도 git은 추적 할 수없는 파일 패턴을이 파일에서 찾습니다. "~ /"는 $ HOME의 값으로 확장되고 "~ user /"는 지정된 사용자의 홈 디렉토리로 확장됩니다.
rliu

9

참고 : git1.7.12 (2012 년 8 월)부터 :

의 가치:

  • core.attributesfile 기본값은 $ HOME / .config / git / attributes이고
  • core.excludesfile$HOME/.config/git/ignore이러한 파일이 존재할 때 기본값은 각각입니다.

따라서 $HOME/.config/git/attributes파일 을 만들면 core.excludesfile설정 을 지정할 필요도 없습니다 .


4

파일은 홈 디렉토리에 있어야합니다. Windows에서는 일반적으로 C : \ documents and settings \ [user]를 의미합니다.

Linux에서는 / home / [user]입니다.


2

처음에 --global없이 잘못된 값으로 'git config core.excludefiles'를 호출했기 때문에이 문제가 발생하여 속성을 로컬에 저장했습니다. 지역 속성이 (올바른 값을 가진) 전역 속성을 숨기고 완전히 무시한 것처럼 보입니다.


2

전역 git ignore가 작동하지 않는 또 다른 이유는 경로에 보이지 않는 문자입니다.

난 단지에서 경고 메시지를 붙여 넣을 때이 내 문제였다 발견 -무시 자식 검사를 가 크롬의 주소 표시 줄에 운이 좋게 볼되었다 :

여기에 이미지 설명 입력

(단말기에서는 보이지 않았습니다. 그리고 이것은 디버깅 의 토끼 구멍이었을 것입니다 ... 😅)


1

(Windows에서) 같은 문제가 발생했습니다. 결국 내 ~/.gitconfig파일을 확인하고 다음 excludesfile으로 설정되어 있음을 알았 습니다.

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt

하지만 다음과 같아야합니다.

excludesfile = C:\\Users\\myUserName\\.gitignore_global

변경 후 모든 것이 정상적으로 작동했습니다.


1

또한이 파일의 인코딩에 대해 재미있는 일이있었습니다. 어떻게 든 내 Windows 10 (Powershell 포함)이 "UTF-16 LE"인코딩으로 파일을 만들었고 어떻게 든 Git이 이것을 처리하지 못했습니다. 인코딩을 문자 그대로 다른 것보다 훨씬 더 합리적인 값으로 변경하면 작동했습니다.


0

.gitignore (_global)이 작동하지 않는 것처럼 보이는 또 다른 이유를 추적하기 어려운 또 다른 이유는 줄의 선행 공백 일 수 있습니다. 파일은 선행 공백을 허용하지 않습니다. 따라서 파일의 각 줄에 빈 줄이 아닌 한 아무것도 없는지 확인하십시오. 알아내는 데 시간이 걸렸습니다.

2 센트 만 더하면됩니다.


0

최근에 실수를하여 다음 명령을 실행하여 git config core.excludesfile tags excludesfile 경로를 현재 저장소의 로컬 파일로 변경했으며이 구성은에서 로컬 구성 파일에 기록되었으므로 파일을 .git/config열고 .git/config줄을 삭제했습니다. excludesfile tags모든 것이 정상으로 돌아 왔습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.