[gitignore] .gitignore 모든 폴더와 하위 폴더에있는 모든 .DS_Store 파일

.gitignore 파일에 .DS_Store를 추가했지만 모든 폴더와 하위 폴더가 아닌 루트 디렉토리의 .DS_Store 만 무시하는 것 같습니다.

이 문제를 어떻게 해결합니까?



답변

문제는 이전 커밋에서 실수로 .DS_Store 파일을 리포지토리에 추가 한 것입니다. 물론 파일이 리포지토리에서 추적되면 적용 가능한 .gitignore 파일의 항목과 일치하더라도 계속 추적됩니다.

리포지토리에 추가 된 .DS_Store 파일을 수동으로 제거해야합니다. 사용할 수 있습니다 git rm --cached .DS_Store. 제거되면, 자식은 그것을 무시한다. 루트 .gitignore 파일에는 다음 줄만 있으면됩니다 .DS_Store. 기간을 잊지 마세요!

git rm --cached .DS_Store만 제거 .DS_Store현재 디렉토리에서. 저장소에서 find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch모두 제거 하는 데 사용할 수 있습니다 .DS_Stores.

팁 펠트 : 당신은 아마 된 .DS_Store 파일을 포함하고 싶지는 않을 때문에, 전역 규칙을합니다. 먼저 전역 .gitignore 파일을 어딘가에 만드십시오 (예 🙂 echo .DS_Store >> ~/.gitignore_global. 이제 git에게 모든 저장소에 사용하도록 지시하십시오 git config --global core.excludesfile ~/.gitignore_global.

이 페이지는 귀하의 질문에 답변하는 데 도움이되었습니다 : https://help.github.com/articles/ignoring-files


답변

추가 **/.DS_Store.gitignore하위 디렉토리를


.DS_Store이미 커밋 한 경우 :

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

모든 저장소에 무시하려면 (때로는 이름 ._.DS_Store)

echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global


답변

.DS_Store가 git 저장소에 추가되지 않은 경우 간단히 .gitignore 파일에 추가하십시오.

없는 경우라는 파일을 만듭니다.

.gitignore

앱의 루트 디렉토리에서 간단히 작성하십시오.

**/.DS_Store

그 안에. 이렇게하면 .DS_Store 파일이 git에 몰래 들어 가지 않습니다.

그러나 이미 있다면 터미널에 작성하십시오.

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

그런 다음 변경 사항을 커밋하고 푸시하여 원격 저장소에서 .DS_Store를 제거하십시오.

git commit -m "Remove .DS_Store from everywhere"

git push origin master

이제 .DS_Store를 .gitignore 파일에 추가 한 다음 두 개의 마지막 코드 조각 (git commit …, git push …)으로 다시 커밋하고 푸시하십시오.


답변

귀하의 .gitignore의 파일은 다음과 같아야합니다 :

# Ignore Mac DS_Store files
.DS_Store

슬래시를 포함하지 않는 한 모든 디렉토리의 파일 이름과 일치합니다. ( 여기에서 )


답변

1 단계, 모든 *.DS_store파일을 삭제 하십시오. 하나는 실행할 수 있습니다

git rm -f *.DS_Store

그러나 rm -f오타가 있으면 조금 위험 할 수 있습니다! 2 단계 : 추가

*.DS_Store
.DS_Store

.gitignore에. 이것은 나를 위해 일했다!


답변

*.DS_Store.gitignore 파일에 추가 하십시오. 그것은 나를 위해 완벽하게 작동합니다


답변

--cachedEdward Newell이 원래 답변에서 언급했듯이 auco의 답변에 플래그를 추가하여 로컬 .DS_store 파일을 유지할 수도 있습니다. 수정 된 명령은 다음과 같습니다. find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch.. cheers and thanks!