gitignore에 .gitignore 추가


140

.gitignore파일을 .gitignore자체 에 추가 할 수 있습니까?

.gitignore

그래도 작동하지 않습니다

편집 된 파일에서보고 싶지 않습니다.


8
왜 그렇게 하시겠습니까? 변경 사항을 커밋하십시오. .gitignore프로젝트의 정크 파일 패턴을 나열하여 저장소의 일부로 간주됩니다.
KurzedMetal

1
.gitignore팀의 모든 사람이 동일한 파일을 무시하거나 체크인 할 수 있도록 저장소의 일부 여야합니다. 해서 .gitignore코드 폴더에 어딘가에 당신이 그것을 배포하는 것은 아닙니다.
Ryan Lundy


.gitignoregit rm --cached .gitignore
hassanzadeh.sd

답변:


170

.gitignore파일의 목적은 프로젝트에서 공동 작업하는 모든 사람이 실수로 생성 된 캐시 파일과 같은 프로젝트에서 일부 공통 파일을 커밋하지 못하도록 방지하는 것입니다. 따라서 .gitignore리포지토리에 포함되어 있기 때문에 무시해서는 안됩니다 .

하나의 저장소에서만 파일을 무시하고 무시 목록 (예 : 개인 파일)을 커밋하지 않으려면 .git/info/exclude해당 저장소에 파일을 추가 할 수 있습니다 .

머신의 모든 저장소에서 특정 파일을 무시하려면 파일을 작성한 ~/.gitignore_global다음 실행할 수 있습니다.

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

36

.gitignore는 체크인되지 않은 경우 스스로 무시할 수 있습니다 .

mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       bar
#       bat
#       baz
#       foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bar
#       bat
#       baz
nothing added to commit but untracked files present (use "git add" to track)

.gitignore를 체크인하면 (자신에게 무시하도록 지시하기 전에) 나중에 무시하기 위해 수정하더라도 항상 git 상태로 표시됩니다.


1
정확히, 이것은 나의 경우이다. 아무도 볼 수없는 로컬 .gitignore작업을 하고 싶습니다 git-svn. 그래서 방금 추가하고 작동했습니다. 그러나 나는 어떤 불안한 사람들이 다른 사람들에게 이것이 "나쁜"것인지 설명 할 수 있는지 봤습니다. 이 답변을 수락해야하며 .git/info/exclude제안도 찬성합니다 . 그래서 그것은 단지 추적되지 않아야합니다 ... 적어도 당신이 "파괴"(svn) 된 적이 있다면 매우 놀라운 것은 아닙니다.
Tomasz Gandor 2009 년

내가 가진 .gitignore파일이 첫 번째 백업을 얻었다. 그런 다음 git rm .gitignore해당 변경 사항을 사용 하고 커밋합니다. 마지막으로에 .gitignore대한 규칙으로 파일을 다시 추가하고 커밋 하십시오 .gitignore. 효과가있다!
qzhang

4
이 문제를 해결하기 위해 실행할 수 있습니다 git rm --cached .gitignore.
기드온

19

그렇게 할만한 이유는 없습니다. 당신이 파일을 원하는 경우 무시 당신을위한 복제 만 ,에 추가 .git/info/exclude하지에 .gitignore파일.


"다음 파일에 대한 기존 변경으로 인해 작업을 완료 할 수 없습니다"라는 메시지가 표시되고 제외 할 파일이 표시됩니다. 왜 그런지 알아?
Paul McCarthy

3

.gitignoregitignore 파일에 입력 한 후 다음을 시도하십시오.

git rm -r --cached .
git add --all
git commit -m "ignoring gitignore"
git push --set-upstream origin master

이미 언급했듯이 작동하지만 리포지토리를 여러 사용자가 공유하는 경우 gitignore를 무시하면 비생산적 일 수 있습니다.


2

그래 넌 할수있어; 여전히 git에 의해 추적되기 때문에 편집 된 파일에서 여전히 볼 수 있으며 git에 의해 추적 된 파일은 .gitignore에 있더라도 항상 수정 된 것으로 표시됩니다. 그래서 단순히 untrack 을.

그러나 변경 사항을 커밋하거나 재설정하지 않는 이유는 무엇입니까? 상태에서 제거하는 것이 훨씬 더 좋은 방법입니다 ... 또한 새로운 리포지토리 복제본은을 추가해야 .gitignore하므로 성 가실 수 있습니다.


예, got rm --cached .gitignore아마도 git by에서 별도로 제거해야합니다 .
Tadeck

git rm --cached .gitignore가 git에서 제거되고 있습니다. 그것은 파괴적이고 바람직하지 않습니다. 로컬 클론에 대해 .gitignore를 무시하는 방법은 무엇입니까?
javadba

0

이것을 .gitignore 파일에 쓰면됩니다. 은 *무시 목록에 모든 것을 추가 한 다음 무시 목록 !.gitignore에서 .gitignore 파일을 제거합니다.

*
!.gitignore

3
이것은 OP가 원하는 것과는 정반대입니다.
Dmitry Parzhitsky

예, 맞습니다. 이미 언급 한 바 있습니다. *모든 것을 무시합니다. .gitignore파일을 포함 합니다.
Ankit Singh

1
OP는 코드베이스 에서 파일 을 제거 하려고 시도 하고 있습니다 ( .gitignore파일을 자체에 추가하여 실제로 의미가 없지만 누가 판단해야합니까). 여기 차례로 수단에가 (있다 존재 보장하지만이 파일이 무시되지 않습니다 있다는 것을 제안 볼 수 있습니다 추가 로) 코드베이스를
드미트리 Parzhitsky

맞습니다. 질문 자체가 뒤틀린 것 같습니다. 하지만 괜찮아
Ankit Singh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.