방금 git init
새 프로젝트의 뿌리를 밟았습니다.
그런 다음 .gitignore
파일을 만들었습니다 .
이제을 입력 git status
하면 추적되지 않은 파일 목록에 .gitignore 파일이 나타납니다. 왜 그런 겁니까?
how to gitignore .gitinore file
을 통해 여기에 왔으며 질문과 대답은 실제로 제목과 관련이 없습니다. 제목이 향상 될 수 있습니다.
방금 git init
새 프로젝트의 뿌리를 밟았습니다.
그런 다음 .gitignore
파일을 만들었습니다 .
이제을 입력 git status
하면 추적되지 않은 파일 목록에 .gitignore 파일이 나타납니다. 왜 그런 겁니까?
how to gitignore .gitinore file
을 통해 여기에 왔으며 질문과 대답은 실제로 제목과 관련이 없습니다. 제목이 향상 될 수 있습니다.
답변:
.gitignore
로 실제로, 추가에 최선을 다하고해야하므로 파일 저장소에 있어야 git status
제안한다. 변경 사항을 병합 할 수 있도록 저장소 트리의 일부 여야합니다.
따라서 저장소에 추가하십시오.
당신은 정말 당신이 추가 할 수 있습니다 원하는 경우 .gitignore
받는 .gitignore
파일 당신은 최선을 다하고하지 않으려면. 그러나이 경우 .git/info/exclude
.gitignore와 동일하게 작동하지만 .git
폴더 에 있으므로 "git status"에 표시되지 않는 특수 체크 아웃 로컬 파일 인 ignores 를에 추가하는 것이 좋습니다 .
Git 트리 외부에 무시 된 파일 목록을 저장하려면 .git / info / exclude 파일을 사용할 수 있습니다 . 리포지토리 체크 아웃에만 적용됩니다.
~/.gitignore
하므로 내가 작업하는 모든 저장소에서 무시됩니다.
git update-index --assume-unchanged <file>
저장소를 변경하지 않고 변경 내용 추적을 중지 할 수 있습니다 . 이 기능은 로컬 변경이 필요한 대규모 공유 프로젝트에서 매우 유용하지만 다른 사람이 자신의 물건을 리포지토리에 바치는 것을보고 싶어하지 않습니다.
실제로 파일에 줄을 .gitignore
넣을 수 .gitignore
있습니다. 이로 인해 .gitignore
파일이 git에 의해 무시됩니다. 나는 이것이 좋은 생각이라고 생각하지 않습니다. 무시 파일은 버전 제어 및 추적되어야한다고 생각합니다. 나는 이것을 완전성을 위해 거기에 내놓고 있습니다.
git rm --cached .gitignore
모든 repos에 .gitignore
자동으로 적용 되는 전역 사용자 git 파일을 가질 수도 있습니다 . 이것은 IDE 및 편집기 파일 (예를 들어, 유용합니다 및 빔에 대한 파일). OS에 맞게 디렉토리 위치를 변경하십시오.swp
*~
~/.gitconfig
파일에 추가 하십시오.
[core]
excludesfile = /home/username/.gitignore
~/.gitignore
무시할 파일 패턴으로 파일을 작성하십시오 .
도트 파일을 다른 저장소에 저장하여 백업을하십시오 (선택 사항).
repo를 복사, 초기화 또는 복제 할 때마다 전역 gitignore 파일도 사용됩니다.
누군가 이미 .gitignore
리포지토리 에 a 를 추가 했지만 일부를 변경하고 해당 변경을 무시하려면 다음을 수행하십시오.
git update-index --assume-unchanged .gitignore
소스 .
.git/info/excludes
가 존재합니다.
--assume-unchanged
가 있다고 생각 합니다. 왜 하나가 다른 것보다 낫습니까?
.git/info/excludes
파일이 이미 추적 된 경우 btw 가 작동하지 않습니다.
다른 사람이 우리와 똑같은 고통을 겪을 수 있습니다. 이미 커밋 된 파일을 제외하고 싶었습니다.
이 게시물은 더 유용했습니다. .git / info / exclude 작업이 너무 늦었습니다.
특히 파일을 무시해야 할 것은 실제로 git remove 명령을 사용하는 것입니다. git rm 참조 ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )
당신은 가서 그것을 테스트
git rm --dry-run *.log
(모든 로그 파일을 제외시키려는 경우)
어떤이가 출력 될 것입니다 당신이 그것을 실행 한 경우 제외.
그때
당신은 가서 그것을 실행
git rm *.log
(또는 원하는 파일 이름 경로 / 표현식)
그런 다음 파일에 *.log
줄을 추가 .gitignore
하십시오.
git status
나중에 표시 될 경우 혼란을 일으키지 않습니다 .
물론 .gitignore 파일은 추적되지 않기 때문에 상태에 표시되며 git은 파일을 맛있는 새 파일로 간주합니다!
그러나 .gitignore는 추적되지 않은 파일이므로 .gitignore에 넣을 때 git에 의해 무시 될 후보입니다!
따라서 대답은 간단합니다. 다음 줄을 추가하십시오.
.gitignore # Ignore the hand that feeds!
.gitignore 파일로!
그리고 August의 응답과 달리 .gitignore 파일 이 리포지토리에 있어야 한다는 것은 아닙니다 . 그것은 단지 할 수 있는 일이 것이 편리하다, 수. 그리고 이것이 아마도 .gitignore가 .git / info / exclude의 대안으로 생성 된 이유 일 것입니다.이 저장소에는 추적 할 수있는 옵션이 없습니다. 어쨌든 .gitignore 파일 사용 방법은 전적으로 귀하에게 달려 있습니다.
자세한 내용 은 kernel.org 에서 gitignore (5) 맨 페이지 를 확인하십시오 .
우선, 다른 많은 사람들이 이미 말했듯이, .gitignore
Git이 추적 해야하므로 무시해서는 안됩니다. 이유를 설명하겠습니다.
(TL; DR : .gitignore
파일을 커밋하고 전역.gitignore
을 사용 하여 IDE 또는 운영 체제에서 작성된 파일을 무시하십시오)
Git은 이미 알고 있듯이 분산 버전 제어 시스템 입니다. 즉, 개발이 다른 지점으로 분기 된 경우에도 다른 버전간에 전환 할 수 있으며 여러 개발자가 동일한 프로젝트에서 작업 할 수 있습니다.
.gitignore
스냅 샷간에 전환 할 때 추적 기능 에도 이점이 있지만이 를 커밋하는 가장 중요한 이유는 동일한 프로젝트에서 작업중인 다른 개발자와 파일을 공유하고 싶기 때문입니다. 파일을 Git에 커밋하면 다른 제공자가 .gitignore
저장소를 복제 할 때 자동으로 파일을 가져 오므로 커밋해서는 안되는 파일 (예 : 로그 파일, 캐시 디렉토리, 데이터베이스 자격 증명)을 실수로 커밋 할 염려가 없습니다. 등). 어떤 시점에서 프로젝트 .gitignore
가 업데이트되면 파일을 수동으로 편집하지 않고 변경 사항을 가져올 수 있습니다.
물론 무시하고 싶은 파일과 폴더가 있지만 특정 파일은 다른 개발자에게 적용되지 않습니다. 그러나 이것들은 프로젝트 안에 있지 않아야합니다 .gitignore
. 파일과 폴더를 무시할 수있는 다른 두 곳이 있습니다.
.gitignore
배치해야합니다 . 이점은 .gitignore
컴퓨터의 모든 리포지토리에 적용되므로 모든 리포지토리에 대해이 작업을 반복 할 필요는 없습니다. 다른 운영 체제 및 / 또는 IDE를 사용하고있을 수 있으므로 다른 개발자와 공유하지 않습니다..gitignore
또는 전역에 속하지 않는 파일은의 명시 적 저장소 제외를.gitignore
사용하여 무시할 수 있습니다 . 이 파일은 다른 개발자와 공유되지 않으며 해당 단일 저장소에만 해당됩니다.your_project_directory/.git/info/exclude
.gitignore
.gitignore
는 아직 Git에서 추적하지 않는 파일을 무시하는 경우에만 작동합니다. 이미 추적 된 파일을 추가해도 .gitignore
해당 파일에 대한 변경 사항을 커밋 할 수 있습니다. 이것이 가능하더라도 .gitignore
Git이 자신을 무시하도록 지시 할 때 어떻게 변경 사항 을 커밋 합니까?
.gitignore에 이미 체크인했고 수정을 무시하려면 이 답변을 확인하십시오 .
이 명령을 사용해보십시오 :
git update-index --assume-unchanged FILENAME_TO_IGNORE
변경 사항을 커밋하려면 다음을 사용하십시오.
git update-index --no-assume-unchanged
업데이트 :
현재 디렉토리에 '변경되지 않은 것으로 가정' 파일 을 나열하는 방법은 다음과 같습니다 .
git ls-files -v | grep -E "^[a-z]"
는 AS
-v
옵션에 대한 소문자를 사용합니다 파일 '불변을 가정'.
제 경우에는 기존 파일을 제외하고 싶습니다. .gitignore 만 수정하면 작동하지 않습니다. 나는 다음 단계를 따랐다.
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
이 방법으로 제외하려는 파일을 캐시에서 정리하고 .gitignore에 추가 한 후 정리 했습니다 .
git repo의 기본 디렉토리로 이동하여 다음 명령을 실행하십시오.
echo '\\.*' >> .gitignore
맥에 있다면 그 성가신 .DS_Store를 포함한 모든 도트 파일은 무시됩니다.
gitignore를 무시하는 것이 매우 유용한 상황이 있다고 생각합니다. 예를 들어, 동일한 코드베이스에서 여러 팀 또는 큰 팀이 작업하는 경우입니다. 이 경우 특정 규칙이 필요합니다.이 규칙 중 하나는 git repo에서 무시되는 내용과 관련이 있습니다. 일반적으로 IDE 또는 OS로 생성 된 파일과 디렉토리, 생성 된 일부 로그 등을 무시하는 것입니다.
그러나 .gitignore
파일에 비 전통적인 변경을 일으키는 경향이 있습니다. 그만큼.gitignore
파일이 추가로 사용, 또는 다른 어떤 경우에하는 도구로, 실수로, 무책임한 사람에 의해 변경 될 수 있습니다.
이에 대한 반력을 갖기 위해 다음과 같이 할 수 있습니다.
.gitignore
파일은 이러한 방식으로 " 봉인 "됩니다." 밀봉 된 ".gitignore
파일은 체인저를 다른 팀 구성원에게 전파하지 않고 로컬로만 변경할 수 있습니다. 그러나 팀 전체에서 변경 사항이 "밀봉 해제"할 수있는 것보다 광범위하게 합의 된 경우 변경 한 후 다시 "밀봉"하는 것보다 변경하십시오. 실수로, 의도적으로 만 할 수는 없습니다.
슬프게도, 당신은 어리 석음으로부터 100 % 보호받을 수 없지만, 이런 식으로 당신은 어리석은 일이 일어나지 않도록 할 수있는 모든 것을 다했습니다.
당신이 아주 훌륭한 전문가들로 구성된 비교적 작은 팀을 가지고 있다면, 이것은 중요하지 않을 것입니다. 그러나 그 사람들조차도 걱정할 것이 적은 것을 감사하게 생각할 것입니다.
사용 .git/info/exclude
** 당신이 당신 자신의을 포함, 인프라 설정에 대한 아무것도 할 수 없을 때 냉각되어 실수를하지.
옳고 그른 것의 입장에서 나는 .gitignore
파일에 .gitignore 항목을 가지고 투표 하여 모든 사람들이 원하는 것을 로컬로 할 수는 있지만 다른 사람들을 침범하지는 않는다고 투표 하고 있습니다.
git add self && git commit -m "-1 for reverting existential depression" && git remote rm HEAD