질문자 :Matt Parkins
내 .gitignore
파일이 Git에서 무시되는 것 같습니다. .gitignore
파일이 손상되었을 수 있습니까? Git은 어떤 파일 형식, 로케일 또는 문화를 기대합니까?
내 .gitignore
:
# This is a comment debug.log nbproject/
git status
에서 출력:
# On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # debug.log # nbproject/ nothing added to commit but untracked files present (use "git add" to track)
나는 debug.log
및 nbproject/
가 추적되지 않는 파일 목록에 나타나지 않기를 바랍니다.
이 문제를 해결하려면 어디서부터 시작해야 하나요?
.gitignore
추가한 후에도 파일에 대해 "알 수 있는" 것 같습니다.
경고: 먼저 현재 변경 사항을 커밋하거나 숨깁니다. 그렇지 않으면 변경 사항이 손실됩니다.
그런 다음 Git 리포지토리의 최상위 폴더에서 다음 명령을 실행합니다.
git rm -r --cached . git add . git commit -m "fixed untracked files"
Alin Huruba.gitignore
파일에 대한 변경 사항을 인식하지 못하는 것 같으면 다음 사항을 확인하는 것이 좋습니다.
- 로컬 파일을 방해할 수 있는 전역
.gitignore
파일이 있을 수 있습니다. .gitignore 파일에 무언가를 추가할 때 다음을 시도하십시오.
git add [uncommitted changes you want to keep] && git commit git rm -r --cached . git add . git commit -m "fixed untracked files"
.gitignore 파일에서 무언가를 제거했는데 위의 단계가 작동하지 않을 수 있습니다. 위의 단계가 작동하지 않는 경우 다음을 시도하십시오 .
git add -f [files you want to track again] git commit -m "Refresh removing files from .gitignore file." // For example, if you want the .java type file to be tracked again, // The command should be: // git add -f *.java
ifeegoo결정된. 알겠습니다. Windows의 메모장에서 .gitignore 파일을 생성했는데 작동하지 않습니다. Linux에서 .gitignore 파일을 보았을 때 조직적인 횡설수설처럼 보였습니다. 아마도 메모장은 ASCII 또는 8비트가 아닌 유니코드를 작성했을 것입니다.
그래서 Linux 상자에서 파일을 다시 작성했고 Windows로 다시 가져왔을 때 제대로 작동합니다! 만세!
Matt Parkins프로젝트에 다른 커밋을 추가하지 않고 한 .gitignore
과 같이 작동하도록 할 수 있습니다.
git rm -r --cached debug.log nbproject
이렇게 하면 저장소에서 제거되지만 물리적으로 유지됩니다. 일반 영어로 관련 변경 기록을 삭제하고 향후 커밋에서도 변경 내용을 추적하지 않습니다. 여기 에서 더 나은 설명을 찾을 수 있습니다.
H Aßdøµ이 문제의 또 다른 원인은 문 앞의 공백이나 탭입니다.
예시:
# Be aware of the following: notWorkingIgnore.* workingIgnore.*
그리고 아래 주석에서 지적한 것처럼 후행 공백도 문제가 될 수 있습니다.
# Be aware of the following: notWorkingIgnore.* #<-Space workingIgnore.*#<-Nospace
Rawa.gitignore
의 인코딩이 영향을 미치고 있음을 알아차렸습니다. 파일이 유니코드이면 무시되고 ASCII이면 무시됩니다.
프로세스:
- 상태 확인:
PS> git status
- Get-FileEncoding에 대한 함수 만들기
-
.gitignore
인코딩 테스트 PS> Get-FileEncoding .gitignore
- 인코딩을 ASCII로 변경합니다
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
- 확인:
PS> git status
craig다른 솔루션과 마찬가지로 먼저 커밋하고 커밋되지 않은 변경 사항 은 손실된다는 점을 염두에 두십시오.
나는 이것으로 더 나은 결과를 얻었습니다.
git rm -r --cached . git reset HEAD --hard git status
이제 상태에 수정된 파일이 없어야 합니다.
Steven Stark제 경우에는 파일이 이미 저장소에 있고 무시하려고 하기 때문입니다.
문제를 해결하기 위해 수행한 작업은 다음과 같습니다.
- 파일을 임시 폴더에 복사
- 내 프로젝트 폴더에서 제거하십시오.
- 저장소에서 해당 파일을 제거하는 변경 사항을 커밋합니다.
- 해당 파일을 내 프로젝트 폴더에 다시 추가했습니다.
그때까지 해당 파일에 대한 변경 사항은 무시되었습니다.
저장소에 이미 존재하는 파일을 무시할 수 없다고 생각합니다.
Edesa여기에 있는 모든 답변은 실제로 해결 방법입니다. git init
를 실행 하기 전에 .gitignore 파일을 생성해야 합니다. 그렇지 않으면 git
은 이미 추적된 파일이기 때문에 해당 파일을 무시해야 한다는 사실을 결코 알지 못할 것입니다.
echo .idea/ >> .gitignore git init
매일 개발한다면 습관적으로 무시하는 파일을 ~/.gitignore_global
파일에 추가하는 것이 좋습니다. 그렇게 하면 git
은 사용자가 일반적으로 무시하는 파일(홈 디렉토리에 있는 파일이기 때문에 "사용자"를 의미함)을 이미 알고 있습니다.
CESCO.gitignore
를 넣은 디렉토리를 확인하십시오.
프로젝트 루트에 있어야 합니다.
./myproject/.gitignore
안에 없음
./myproject/.git/.gitignore
Artem Zaytsev.gitignore
에는 특히 Windows 사용자에게 발생할 수 있는 또 다른 문제가 있습니다. .gitignore
(예: unity.gitignore
)의 이름을 지정하는 것을 좋아하지 않습니다.
.gitignore
또는 Windows의 경우 .gitignore.
이름을 지정하고 싶을 것입니다. Windows는 파일 이름 없이 이름을 바꾸려고 한다고 생각합니다.
Goldblaze특히 Windows 사용자의 경우: 추적되지 않은 파일이 있고 캐시된 파일 지우기/제거가 작동하지 않는 경우. PowerShell을 열고 .gitignore 파일을 UTF-8 인코딩으로 변환해 보십시오.
$Myfile = Get-Content .\.gitignore` $Myfile | Out-File -Encoding "UTF8" .gitignore
해당 디렉토리에 대한 .gitignore 파일을 인코딩하려면 이 작업을 한 번만 수행하면 됩니다. 그러면 파일이 올바르게 인코딩되므로 나중에 파일을 편집할 때마다 작동해야 합니다. 나는 이것이 .gitignore 파일에 대해 UTF-8이 아닌 인코딩을 읽지 않는 GitHub의 결함 때문이라고 생각합니다. 내가 아는 한 이 문제는 아직 Windows에서 해결되지 않았습니다. 너무 큰 거래는 아니며 작동하지 않을 때 디버그하기가 어렵습니다.
maximusg방금이 문제가 발생했습니다. 내 .gitignore 파일 내의 콘텐츠가 추적되지 않은 파일 목록에 계속 나타났습니다.
이것을 사용하여 무시 파일을 만들었습니다.
echo "node_modules" > .gitignore
큰 따옴표가 나에게 문제를 일으키는 것으로 나타났습니다. 무시 파일을 삭제한 다음 따옴표 없이 명령을 다시 사용했는데 예상대로 작동했습니다. 파일 인코딩을 엉망으로 만들 필요가 없었습니다. 저는 Cmder를 사용하는 Windows 10 컴퓨터에 있습니다.
예시:
echo node_modules > .gitignore
bprdev나를 위해 이전 답변 중 어느 것도 효과가 없었습니다. .gitignore
텍스트를 다음 위치에 있는 exclude.txt
파일에 복사해야 했습니다.
<Your-project-folder>\.git\info
완료되면 변경 사항을 새로 고치면 추적되지 않은 모든 파일이 사라집니다. 평소와 같이 커밋합니다.
raga내 문제는 (OP가 제안한대로) 손상된 .gitignore 파일이었습니다. 나는 다른 모든 것이 실패할 때까지 그것이 가능하다는 것을 믿지 않았고 가능성을 무시했습니다. 손상 은 vi
에 나타나지 않았지만 파일 시작 부분에 .gitignore 파일이 무시되도록 하는 2바이트가 있었습니다. cat .gitignore
입력했을 때만 나타났습니다.
��# Built application files *.apk *.ap_ # ...
이것이 어떻게 끝났는지 모르겠지만 파일을 다시 생성하면 문제가 해결되었습니다. 손상된 파일의 16진법 분석은 다음을 보여줍니다.
user@dev ~/project/myproject $ xxd -b .gitignore 00000000: 11111111 11111110 00100011 00000000 00100000 00000000 ..#. . 00000006: 01000010 00000000 01110101 00000000 01101001 00000000 Bui
pcdev다음 줄이 포함된 .gitignore 파일에서 이 문제가 발생했습니다.
lib/ext/
사실 이 디렉토리가 다른 폴더에 대한 심볼릭 링크라는 것을 방금 깨달았습니다.
ls -la lib/ext/ lrwxr-xr-x 1 roipoussiere users 47 Feb 6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib
lib/ext/
줄에서 Git은 실제로 폴더 를 검색하지만 심볼릭 링크는 file 이므로 내 lib
폴더는 무시되지 않습니다.
내 .gitignore 파일에서 lib/ext/
를 lib/ext
로 교체하여 이 문제를 해결했습니다.
roipoussiere나는이 같은 문제가 있었다. 나는 문제가 CR 대 CR+LF 불일치라고 생각합니다. CMD(Windows 7에서)와 다음 명령을 사용하여 .gitignore에 물건을 숨겼습니다.
나쁜:
echo "file_to_be_ignored.py" >> .gitignore<br> echo "*~" >> .gitignore
등.
문제는 이 명령이 Git이 줄 바꿈을 인식할 수 있도록 올바른 줄 끝 마커를 배치하지 않는다는 것입니다(Git이 다른 줄을 예상하는 경우 CR 또는 CR+LF). Vim에서 각 줄 바꿈을 수동으로 교체하여 문제를 해결했으며(Vim to 구출!) 완벽하게 작동했습니다.
Notepad++ 또는 Vim(이상적으로는)에서 .gitignore를 편집해 보십시오. 파일 형식이 올바른 것처럼 보이더라도 줄 바꿈을 바꿔 보십시오. 이상하게 들릴지 모르지만, 그것은 나를 위해 일했습니다. :NS
fictivelogic이미 훌륭한 답변이 있지만 내 상황은 지루했습니다. Win10에 설치된 PLM(제품 수명 주기 관리) 소프트웨어의 소스를 편집한 후 "이걸 git repo로 만들었어야 했어"라고 결정했습니다.
따라서 캐시 옵션은 직접적으로 작동하지 않습니다. 많은 초기 작업을 수행한 후 소스 제어를 추가했을 수 있는 다른 사람들을 위해 게시하고 .gitignore
가 작동하지 않지만, 많은 작업을 잃을 수 있으므로 git rm --cached
가 적합하지 않습니다.
!중요: 이것은 너무 크고 내 .gitignore를 무시하는 것으로 보이는 "프로젝트"에 너무 늦게 git을 추가했기 때문입니다. 나는 커밋이 없습니다. 이걸로 끝낼 수 있어요 :)
첫째, 나는 방금 다음을 수행했습니다.
rm -rf .git rm -rf .gitignore
그 다음, 나는 나의 변화의 사진을 가지고 있어야 했다. 다시 말하지만, 이것은 내가 변경한 설치 제품입니다. 순수 마스터 브랜치의 첫 번째 커밋에는 너무 늦었습니다. 그래서 다음 중 하나에 > changed.log
를 추가하여 프로그램을 설치한 후 변경한 목록이 필요했습니다.
파워쉘
# Get files modified since date. Get-ChildItem -Path path\to\installed\software\ -Recurse -File | Where-Object -FilterScript {($_.LastWriteTime -gt '2020-02-25')} | Select-Object FullName
세게 때리다
# Get files modified in the last 10 days... find ./ -type f -mtime -10
이제 지난 10일 동안 내가 변경한 목록이 있습니다.
새로운 시작을 위해 지금:
git init . # Create and edit .gitignore
변경된 목록을 성장하는 .gitignore와 비교해야 했고, git status
를 실행했지만 .gitignore의 편집 내용은 진행하면서 읽어들였습니다.
마지막으로 원하는 변경 사항 목록이 있습니다! 제 경우에는 상용구입니다. 이 소프트웨어에 대해 dev 시스템을 실행하는 것과 관련된 서버 xml 구성과 함께 일부 테마 작업을 하고 다른 개발자가 잡고 기여할 수 있도록 리포지토리에 넣고 싶습니다... 이것은 우리의 마스터 분기가 될 것이므로 커밋하고, 밀고, 마침내 새로운 작업을 위해 BRANCHING!
Neil Guy Lindberg자, 제 경우에는 허용된 솔루션이 작동하지 않았으며 작동한 내용은 여기에 설명되어 있습니다.
Visual Studio 2013이 .gitignore 파일을 무시합니까?
간단히 말해서:
- 비주얼 스튜디오를 닫습니다.
- .git 폴더로 이동합니다.
-
ms-persist.xml
삭제 - 비주얼 스튜디오 다시 시작
Bartosz또한 한 가지 살펴봐야 할 사항: .gitignore 파일을 올바른 줄 끝으로 저장하고 있습니까?
윈도우:
Windows에서 사용하는 경우 Windows 줄 끝으로 저장합니까? 모든 프로그램이 기본적으로 이 작업을 수행하는 것은 아닙니다. 메모장 ++ 및 많은 PHP 편집기는 기본적으로 Linux 줄 끝을 사용하므로 파일이 서버와 호환됩니다. 이를 확인하는 한 가지 쉬운 방법은 Windows 메모장에서 파일을 여는 것입니다. 모든 것이 한 줄에 나타나면 파일이 Linux 줄 끝으로 저장되었습니다.
리눅스:
Linux 환경에서 파일이 작동하는 데 문제가 있는 경우 Emacs 또는 nano 와 같은 편집기에서 파일을 엽니다. 인쇄할 수 없는 문자가 표시되면 파일이 Windows 줄 끝으로 저장된 것입니다.
Beachhouse여기에서 다른 답변에서 다루지 않은 한 가지 까다로운 점은 다음과 같이 인라인 주석이 있는 경우 .gitignore 파일이 작동하지 않는다는 것입니다.
foo/bar # The bar file contains sensitive data so we don't want to make this public
따라서 그러한 의견이 있으면 다음과 같이 변경하십시오.
# The bar file contains sensitive data so we don't want to make this public foo/bar
James또 다른 가능한 이유는 - 동시에 실행되는 Git 클라이언트의 몇 가지 인스턴스입니다 . 예를 들어 "git shell" + "GitHub Desktop" 등입니다.
이것은 나에게 일어났다. "GitHub Desktop"을 주 클라이언트로 사용하고 있었고 새로운 .gitignore 설정을 무시하고 있었습니다. 커밋 후 커밋:
- 당신은 뭔가를 저지른다.
- 다음으로 커밋: .gitignore 설정을 무시합니다. 커밋에는 .gitignore에 언급된 많은 임시 파일이 포함되어 있습니다.
- Git 캐시 지우기 .gitignore가 UTF-8인지 확인하십시오. 파일 제거 → 커밋 → 파일을 다시 이동 한 커밋 건너뛰기 - 아무 것도 도움이 되지 않았습니다.
이유 : Visual Studio Code 편집기가 동일한 열린 리포지토리로 백그라운드에서 실행 중이었습니다. Visual Studio Code에는 Git 컨트롤이 내장되어 있으며 이로 인해 일부 충돌이 발생합니다.
솔루션 : 여러 숨겨진 Git 클라이언트를 다시 확인하고 한 번에 하나의 Git 클라이언트만 사용하십시오. 특히 Git 캐시를 지우는 동안에는 더욱 그렇습니다.
Oleg Zarevennyi저에게는 또 다른 문제였습니다. 내 .gitignore 파일은 내가 무시하지 말라고 말한 것을 제외한 모든 것을 무시하도록 설정되어 있습니다. 다음과 같이:
/* !/content/
이제 이것은 분명히 내가 Git에게 .gitignore 파일 자체를 무시하도록 지시하고 있음을 의미합니다. .gitignore 파일을 추적하지 않는 한 문제가 되지 않았습니다. 그러나 어느 시점에서 .gitignore 파일 자체를 커밋했습니다. 그러면 .gitignore 파일이 제대로 무시됩니다.
따라서 한 줄을 더 추가하면 해결됩니다.
/* !/content/ !.gitignore
user8118328sudo
명령으로 .gitignore
파일을 편집했을 가능성도 있습니다. 동일한 문제가 발생했고 명령을 실행하는 동안 git status
"무시해야 함" 파일을 볼 수 있었습니다.
sudo nano .gitignore
nano .gitignore 대신 nano .gitignore
편집하면 올바른 반사를 볼 수 있습니다.
aviral sanjayecho "..." > .gitignore
를 사용하여 .gitignore를 만들었습니다. Windows 탐색기에서 만들 수 없기 때문입니다.
제 경우에는 생성된 파일의 인코딩이 문제였는데 ANSI로 변경해서 해결했습니다.
Ahmad나도 우분투에서 같은 문제가 .gitignore
를 만들었고 저에게 효과적입니다.
touch .gitignore
C.K말 그대로 .gitignore라는 텍스트 문서를 만들었기 때문에 광산이 작동하지 않았습니다.
대신 텍스트 문서를 만들고 메모장++에서 연 다음 .gitignore로 저장합니다.
저장할 때 드롭다운에서 모든 유형(*.*)을 선택해야 합니다.
touch .gitignore
를 사용하기만 하면 됩니다.
Kari.gitignore
나열된 파일을 추적하는 상황이 발생할 때마다 다음을 사용합니다.
git update-index --skip-worktree <file_name>
Jesse이전에 Git에서 커밋한 폴더나 파일을 다음 명령어로 제거하면 됩니다. 그러면 gitignore 파일에 올바른 파일이 반영됩니다.
git rm -r -f "folder or files insides"
Atif Hussain메모장++ 사용자인 경우 다음을 수행해 보십시오.
메모장++을 사용하여 .gitignore 파일을 열고 다음을 수행합니다.
메뉴 편집 → EOL 변환 → Windows 형식 → 저장 .
git status
다시 사용하여 작동하는지 확인하십시오.
비슷한 질문에 대한 답변을 여기에 게시했습니다.
Ozesh출처 : http:www.stackoverflow.com/questions/11451535/gitignore-is-ignored-by-git