무시 된 파일을 자식 상태에서 유지


133

변경되었지만 업데이트되지 않은 파일 git status목록에 많은 문서와 구성 파일이 있으면 목록이 반 쓸모가 없기 때문에 Git에서 무시 된 파일을 표시 하지 않으려 합니다.

Git이 이러한 파일을 표시하는 것이 정상입니까?

나는이 정보를 무시 넣어 .gitignore망할 놈의 저장소의 루트 디렉토리에있는 파일을 사용하는 경우 그들은 추가되지 않습니다 git add .하지만 그들은 상기 목록에 표시하고 그들이 완전히 하나 무시하지 않는 것 같습니다 하지 않는 목록에 표시 에 의해 인쇄 됨 git ls-files --others -i --exclude-standard. 패턴과 일치하는 파일 만 ~/.gitignore표시됩니다.

초기 단계에서 무시하지 않았기 때문에 적어도 한 번 커밋 되었기 때문일 수 있습니까?

답변:


231

내가 발견 이 게시물에 , .gitignore단지 비 추적 파일을 사용할 수 있습니다. 저장소에 파일을 추가 한 경우 다음을 수행 할 수 있습니다.

git update-index --assume-unchanged <file>

또는 다음 방법으로 저장소에서 제거하십시오.

git rm --cached <file>

편집하다

이 기사에서도 설명합니다


4
업데이트 색인이 나를 위해 일했습니다. 자식 상태가 무시 된 파일을 표시하는 비슷한 문제 ... 매우 성가시다. +1
Abe Petrillo

3
여전히이 문제가 있습니다. 위의 명령 중 어느 것도 나를 위해 일하지 않았습니다. 두 경우 모두 git은 문제의 파일에 대한 지식이 없다고 말하지만 여전히 git status로 표시됩니다. (
Cfreak

5
@Cfreak git status -- <file>파일에 "커밋을 위해 변경되지 않은 변경 사항"또는 "추적되지 않은 파일"이 표시됩니까? 전자는 이미 색인에 파일이 있고 문제를 해결하기 위해 더 많은 정보가 필요합니다 (git 메시지가 표시된 별도의 질문을 작성하고 주석으로 링크를 게시하십시오). 후자는 git (yet)에 의해 추적되지 않지만 .gitignore파일에 없으며 색인에 자유롭게 추가 할 수있는 파일에 대한 것입니다.
MBO

1
@MBO-그렇습니다. 감사합니다! 귀하의 의견은이 답변을 찾는 데 도움이되었습니다 : stackoverflow.com/questions/594757/… 그것은 나를 위해 일했습니다.
Cfreak

1
첫 번째 옵션은 매력처럼 작동합니다. 이미 두 번째 파일을 시도했는데 파일이 "제거"된 상태로 준비되었으므로 확실히 원하지 않았습니다.
Carrm

16

이 문제도 발생했습니다. 아마도 초기 커밋 흐름에서 GIT에 의해 "추적 대상"으로 표시된 후 무시 된 디렉토리 / 파일을 .gitignore에 추가했기 때문일 수 있습니다.

따라서 다음과 같이 git 추적 캐시를 지워야합니다.

git rm --cached -r [folder/file name]

더 자세한 설명은 여기에서 읽을 수 있습니다 : http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

위 명령은 또한 원격 GIT 원점에서 폴더 / 파일의 나머지를 제거했습니다. 따라서 GIT 저장소가 깨끗해집니다.


11

이 파일이 여전히 자식 캐시에있을 수 있습니다. 이 문제를 해결하려면 자식 캐시를 재설정해야합니다.

자식 캐시를 재설정하십시오. 인덱스에서 모든 것을 제거합니다.

git rm -r --cached . 

모든 파일을 다시 추가하십시오.

git add . 

범하다:

git commit -m ".gitignore was fixed." 

2

이것은 확실히 작동합니다.

git rm --cached -r [folder/file name]


1

tmp 디렉토리를 추가하지 않으려는 것으로 가정합니다 (Visual Studio Platform)

1- 로컬 .gitignore 파일에 아래 줄을 추가하십시오.

## ignore tmp
/tmp/
./tmp/

3- 로컬에서 tmp 폴더를 백업하고 삭제합니다. (어딘가에 백업, 예 : 데스크탑?)

4- 원격 동기화 (예 : github)보다 로컬로 변경 커밋.

이 단계 후에 tmp 디렉토리가 다시 업로드되지 않습니다.


0

에서 남자 자식-lsfiles :

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

개인적으로 나는 소스 트리에 doxygen 파일을 유지하는 경향이 있으므로 이것을 .gitignore (소스 트리의 최상위 디렉토리에 있음)에 추가했습니다.

docs/*

희망이 도움이됩니다.


0

다음 단계는 추적되지 않은 파일에 대해서만 작동 합니다. 이 정보는 다음 구성에 적용됩니다.

Platform: linux

Git version: git version 1.8.3.1

무시할 파일 목록을 다음 위치의 "제외"파일에 두십시오.

<path till .git directory>/.git/info/exclude

"제외"파일의 초기 내용

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

"제외"파일의 최종 내용

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


*.tar
*.gch

0

허용 된 답변에 따라 파일을 변경되지 않은 것으로 가정 할 수 있으므로 로컬 컴퓨터에서 수행하는 모든 작업이 원격 지점에 커밋되지 않습니다.

git update-index --assume-unchanged src/main/resources/config.properties src / main.resources / config.properties는 프로젝트 내에서 해당 파일을 찾는 경로의 샘플 과 같은 것 입니다.

이제 저장소에서 파일을 완전히 제거하려면remove cached `git rm --cached 대신 사용하십시오

이 시나리오는 다음 상황에서 적용 할 수 있습니다.

비밀번호를 저장하는 파일이 있다고 가정 해 봅시다. 처음에는 잘못된 세부 정보로 해당 파일을 커밋했으며 동료가 컴퓨터에 동일한 파일을 가지고 있습니다. 그러나 이제 로컬 컴퓨터에 올바른 세부 정보를 추가했습니다. 올바른 암호 세부 정보로 파일이 실수로 다시 커밋되지 않도록하려면 어떻게합니까?


-1

이처럼

git --ignored myfolder

폴더 에만 상태를 표시합니다

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