Git 하위 모듈 내에 추가 된 .gitignore 파일
나는 최근에 내 dotfile을에서 Git 리포지토리에 살도록 재구성했으며 ~/Dropbox/dotfiles
병원체를 사용하여 모든 Vim 애드온을 ~/Dropbox/dotfiles/home/.vim/bundle
. 이 애드온은 Git 하위 모듈로 추가되었습니다.
이제 문제는 Vim을 실행할 때 모든 애드온에 대한 문서를 자동으로 생성하여 각 하위 모듈 디렉토리에 넣습니다. 이것은 내가 피하고 싶은 서브 모듈에 추적되지 않은 콘텐츠를 추가합니다.
ruby-1.8.7-p330@gs ~/Dropbox/dotfiles ‹master*› $ git st
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: home/.vim/bundle/fuzzyfinder (untracked content)
# modified: home/.vim/bundle/l9 (untracked content)
# modified: home/.vim/bundle/matchit (untracked content)
# modified: home/.vim/bundle/ruby (untracked content)
# ...
no changes added to commit (use "git add" and/or "git commit -a")
하위 모듈 내의 .gitignore
모든 doc
폴더 를 무시하기 위해 Git 저장소의 루트에 파일 을 추가하려고했지만 작동하지 않는 것 같습니다.
home/.vim/bundle/**/doc
내 질문 : Git 하위 모듈 내부의 파일과 폴더를 무시하거나 Vim이 Git 저장소 외부의 폴더에 문서를 생성하도록 구성하는 방법이 있습니까?
편집 : Randy Morris가 지적했듯이 이것은 병원균에 의해 다른 위치에 태그 생성 의 중복 일 수 있습니다.
.gitignore
각 하위 모듈 내에 추가해야합니다 .
상기 하위 모듈은 중첩 된 Git 저장소와 같기 때문에 자체 무시 규칙을 처리하고 해당 상태는 .gitignore
상위 저장소의 영향을받지 않습니다 ( 여기에 설명 됨 ).
Randy Morris 가 주석에서 언급 했듯이 vim 특정 설정에 대해서는 SO 질문 " 병원균에 의해 다른 위치에 태그 생성 "을 참조하십시오 .
참고 : Nick 이이 주석에서 언급하고 " 병원균에 의해 다른 위치에 태그 생성 "에 대한 답변에 설명 된대로 구성은 다음과 같습니다.
[submodule "path/to/submodule"]
path = path/to/submodule
url = http://github.com/username/repo.git
ignore = untracked # <====
작동하고 해당 하위 모듈을 git status
.
그러나 " ignore = untracked
" 는 최소한 Git1.7.2를 의미 합니다.
ignore = dirty
나를 위해 해냈어
aee9c7d 커밋 세부 사항에게 차이 untracked
와 dirty
.
"
dirty
": 수퍼 프로젝트와 서브 모듈에 기록 된 커밋의 차이 만HEAD
수정으로 간주되며 서브 모듈 의 작업 트리에 대한 모든 변경 사항은 무시 됩니다.
이 값을 사용하면 하위 모듈에서 작업 트리 변경 사항을 전혀 검색하지 않으므로 큰 하위 모듈에서 성능 이점이 있습니다 ."
untracked
": 하위 모듈 작업 트리에서 추적되지 않은 파일 만 무시되며 하위 모듈에서 변경HEAD
및 / 또는 수정 된 파일은 수정 된 것으로 표시됩니다.
VonC가 추천하는 ignore = untracked
작품이지만, 모든 하위 모듈에 대해 변경해야합니다.
문제를 완전히 해결하려면 모든 git repo에서 전역 gitignore 패턴을 구성한 git config --global core.excludesfile ~/.gitignore_global
다음 doc/tags
$ HOME / .gitignore_global에 추가하면 됩니다.
https://help.github.com/articles/ignoring-files를 참조 하십시오 .
Ben의 대답은 좋은 시작입니다. 그러나 이러한 특정 무시 규칙의 경우 전역 설정이 마음에 들지 않습니다.
각 하위 모듈에 대한 로컬 구성과 하위 모듈 루트 저장소의 중앙 무시 파일을 선호합니다.
cd .vim/bundle
echo "doc/tags" > .gitignore_submodules
git submodule foreach git config --local core.excludesfile "../.gitignore_submodules"
여기서 기본적인 문제는 '추적 된'변경 사항을 무시하려는 것입니다. .gitignore
저장소에 대한 '추적되지 않은'변경 사항 만 무시합니다. 확인하기 위해 (추적 된) 저장소의 일부 파일을 수정하고 파일에 추가 할 수도 있습니다 .gitignore
. 작업 git status
을 수행 하면 파일이 여전히 '수정 됨'으로 나열되는 것을 볼 수 있습니다. 하위 모듈 저장소도 기본 저장소에 의해 추적되는 것으로 간주되므로 단순히 상위 저장소에 gitignore를 추가하면 작동하지 않습니다. 다른 제안대로 .gitignore
개별 저장소 에 규칙을 추가 하거나 최신 git 버전을 사용하는 경우 git status --ignore-submodules
.
참조 URL : https://stackoverflow.com/questions/5127178/gitignore-files-added-inside-git-submodules
'IT TIP' 카테고리의 다른 글
스레드 컨텍스트 전환 오버 헤드를 추정하는 방법은 무엇입니까? (0) | 2020.12.25 |
---|---|
WCF 서비스에 대한 전역 예외 처리기를 어떻게 만듭니 까? (0) | 2020.12.25 |
메모장 ++에서 SHIFT + CTRL + Z 재정의 (0) | 2020.12.25 |
ssh가있는 SCP : scp를 사용하여 Windows에서 원격 서버로 로컬 파일 복사 (0) | 2020.12.25 |
숨겨진 입력이 true / false 대신 value =“value”를 쓰는 이유는 무엇입니까? (0) | 2020.12.25 |