답변:
에서 관련 힘내 문서 :
특정 리포지토리에만 적용되지만 다른 관련 리포지토리와 공유 할 필요가없는 패턴 (예 : 리포지토리 내에 있지만 한 사용자의 워크 플로에만 해당되는 보조 파일)은
$GIT_DIR/info/exclude
파일 로 이동해야 합니다.
.git/info/exclude
파일은 같은 형식은 .gitignore
파일을. 다른 옵션은 core.excludesFile
전역 패턴을 포함하는 파일 이름 으로 설정 하는 것입니다.
스테이지되지 않은 변경 사항이 이미있는 경우 무시 패턴을 편집 한 후 다음을 실행해야합니다.
git update-index --assume-unchanged <file-list>
참고$GIT_DIR
: 이것은 git 저장소의 경로를 나타 내기 위해 git 매뉴얼 전체에서 사용되는 표기법 입니다. 환경 변수가 설정되면 원하는 리포지토리의 위치를 덮어 씁니다. 아마도 원하는 것이 아닙니다.
편집 : 또 다른 방법은 다음을 사용하는 것입니다.
git update-index --skip-worktree <file-list>
다음과 같이 바꾸십시오.
git update-index --no-skip-worktree <file-list>
skip-worktree
가능성이 선호 될 것이다 assume-unchanged
.
업데이트 : git update-index --skip-worktree [<file>...]
@danShumway에게 감사드립니다! 두 옵션의 차이점에 대한 Borealid의 설명을 참조하십시오 .
오래된 답변 :
추적 된 파일에 대한 로컬 변경 사항을 무시해야하는 경우 (구성 파일에 대한 로컬 수정 사항이 있음)을 사용하십시오 git update-index --assume-unchanged [<file>...]
.
git update-index --assume-unchanged my-file.php
무시하기 시작해야했습니다. 팁 고마워!
git update-index --no-assume-unchanged my-file.php
.git/info/exclude
당신은 (종종 공유 및 추적 .gitignore 오염 피하기 위해) 원하는 것입니다
--assume-unchanged
당신의 업데이트 를 읽기 전에 돌진했다 . 나는 함께 취소 한 --no-assume-unchanged
및 다음 한 --skip-worktree
맑은에 ... 암 I을?
.gitconfig 파일의 [alias] 섹션에 다음 줄을 추가하십시오.
ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"
이제 git ignore my_file
로컬 파일의 변경 사항을 무시하고 변경 사항을 무시 하는 데 사용할 수 있습니다 git unignore my_file
. git ignored
무시 된 파일을 나열합니다.
이 답변은 http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html 에서 수집되었습니다 .
몇 가지 옵션이 있습니다.
.gitignore
작업 디렉토리에 더티 (또는 커밋되지 않은) 파일을 남겨 두십시오 (또는 topgit 또는 다른 패치 도구를 사용하여 자동으로 적용하십시오 ).$GIT_DIR/info/exclude
하나의 트리에만 해당되는 경우 제외를 파일 에 넣습니다 .git config --global core.excludesfile ~/.gitignore
하고 패턴을 추가하십시오 ~/.gitignore
. 이 옵션은 모든 트리에서 특정 패턴을 무시하려는 경우에 적용됩니다 . 예를 들어이 파일 .pyc
과 .pyo
파일을 사용합니다 .또한 해당되는 경우 패턴을 사용하고 파일을 명시 적으로 열거하지 않는지 확인하십시오.
git config --global
옵션을 전역 적으로 설정 해야한다고 생각합니다 .
나는 당신이 찾고 있다고 생각합니다 :
git update-index --skip-worktree FILENAME
로컬 변경 사항을 무시하는
여기에 http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ 이 솔루션에 대한 자세한 설명이 있습니다!
사용을 취소하려면 :
git update-index --no-skip-worktree FILENAME
--skipworktree
나중에 현재 무시되고있는 파일 / 패턴 목록을 보려면 나중에 마음을 바꾸고 파일 추적을 다시 시작해야합니까?
git update-index --no-skip-worktree <file>
git 별명 을 설치 하여이 프로세스를 단순화 할 수 있습니다 . 파일 의 [alias]
노드가 편집 .gitconfig
됩니다.
git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'
이 설치 방법은 다음과 같습니다.
git ignore config.xml
config.xml
을 실수로 커밋하지 못하게합니다.git unignore config.xml
config.xml
해당 변경 사항을 다시 커밋 할 수 있습니다.git ignored
난을 참조하여 다음을 구축 phatmann의 대답 제시 - --assume-unchanged
같은 버전을.
내가 제시하는 버전은 --skip-worktree
로컬 변경을 무시 하는 데 사용 합니다. 차이점에 대한 자세한 설명은 Borealid의 답변 을 참조하십시오 . 그러나 본질적으로 개발자가 변경 내용을 커밋 할 위험없이 파일을 변경하는--skip-worktree
것이 목적입니다 .
git ignored
명령은 여기에 제시된 사용 git ls-files -v
하고,로 시작하는 바로 그 항목을 표시하도록 목록을 필터링 S
태그를. S
태그는 그의 상태이다 "worktree을 건너"파일을 나타냅니다. 표시되는 파일 상태의 전체 목록은 다음 git ls-files
에 대한 -t
옵션 설명서를 참조하십시오 git ls-files
.
'!git ls-files -v | grep "^S"'
합니까? 명령이 저와 함께 작동하지 않습니다 .. 제거하면 제대로 작동하는 것 같습니다.
Expansion of alias 'ignored' failed; 'git' is not a git command
git git ls-files …
git ignore <filename>
해당 디렉토리에만 적용됩니다. 마지막으로 해당 파일을 변경하고 커밋하고 원격으로 푸시하려면 핸디 git unignore <filename>
를 사용하여 일시적으로 다시 추적을 시작하십시오! 감사!
간단히 .gitignore 파일을 홈 디렉토리에 추가 할 수 있습니다 (예 : $HOME/.gitignore
또는) ~/.gitignore
. 그런 다음 git에게 해당 파일을 다음 명령과 함께 사용하도록 지시하십시오.
git config --global core.excludesfile ~/.gitignore
이것은 무시할 대상을 결정할 때 git이 참조하는 일반적인 .gitignore 파일입니다. 홈 디렉토리에 있기 때문에 사용자에게만 적용되며 프로젝트 .gitignore 파일을 오염시키지 않습니다.
나는이 접근법을 수년간 훌륭한 결과로 사용 해 왔습니다.
git check-ignore <file-name>
확인 하는 데 사용하십시오. 그것이 당신을 위해 작동하는 경우 LMK
=
:git config --global core.excludesfile ~/.gitignore
.gitignore
파일을 홈 디렉토리에 넣고 git에게 그 파일을 대신 사용하도록 지시 한 다음 로컬에서 추적 해제하려는 파일을 삭제했습니다. 그러나 변경 사항을 적용한 후 원격 저장소에서도 해당 파일을 삭제했습니다. 내가 뭐 잘못 했어요?
.gitignore
로컬 디렉토리에 존재하는 파일을 무시하는 것입니다. 당신이해야 할 일은 git rm --cached
저장소에서 제거하지만 지역에 남겨 두는 것입니다. 커밋 git reset --soft HEAD^
을 취소하고 파일을 복구하는 것과 같은 방법으로 이전 커밋으로 돌아갈 수 있습니다. 그것은 git의 아름다움입니다 : 그것은 여전히 git history에 있습니다.
리포지토리에 .gitignore 파일이없는 경우 간단한 해결책은 .gitignore 파일을 만들어 .gitignore
무시할 파일 목록에 추가 하는 것입니다.
.gitignore
상단에 공유 파일이 있습니다. 그러나 내 더러운 파일은 깊은 폴더에 있으므로 .gitignore
옆에 내 파일을 추가 했습니다. +1
git update-index --assume-unchanged [<file>...]
제외 파일에 추가 한 후에 실행해야 합니다. 그때까지는 변경 사항이 적용되지 않습니다.