.gitignore 파일에 .DS_Store를 추가했지만 모든 폴더와 하위 폴더가 아닌 루트 디렉토리의 .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
git rm --cached your_file
먼저 사용
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, from : stackoverflow.com/questions/18393498/…
-f
relavent 폴더에 파일이 열려 있으면 추가 가 필요한 것 같습니다 :find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
.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 ...)으로 다시 커밋하고 푸시하십시오.
*
또는 **
당신이 달성하려는 작업에 따라 달라집니다. 쉘에게 디렉토리 탐색 방법을 알려주는 방법입니다. 이 stackoverflow 답변은 완전히 stackoverflow.com/a/28199633/4092170
$ git rm ./*.DS_Store
-자식에서 모든 .DS_Store를 제거하십시오.$ echo \.DS_Store >> .gitignore
-향후 .DS_Store 무시커밋 & 푸시