.DS_Store
Git 저장소에서 성가신 Mac OS X 파일을 어떻게 제거 할 수 있습니까?
.DS_Store
Git 저장소에서 성가신 Mac OS X 파일을 어떻게 제거 할 수 있습니까?
답변:
저장소에서 기존 파일을 제거하십시오.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
라인 추가
.DS_Store
파일 .gitignore
은 저장소의 최상위 레벨에서 찾을 수 있습니다 (또는 아직없는 경우 작성). 최상위 디렉토리에서이 명령으로이 작업을 쉽게 수행 할 수 있습니다.
echo .DS_Store >> .gitignore
그때
git add .gitignore
git commit -m '.DS_Store banished!'
-exec
하면 git-rm
모든 .DS_Store 파일마다 한 번씩 실행 되지만 xargs
모든 경로는 하나의 명령 줄에 배치됩니다. 나는 xargs
많은 특수 문자를 이탈하는 것에 대해 걱정할 필요가 없기 때문에 주로 선호 합니다.
.DS_Store
가 .gitignore
재귀 적 으로 작동 합니까 ? 즉, 그것도 무시할 some/level/of/folders/.DS_Store
것인가?
git rm
repo에없는 파일에서 실패하지 않고으로 업데이트하고 벤 자도와 webmat의 답변을 결합하여 모든 사용자가 일반적으로 붙여 넣을 수있게합니다.
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
~/.gitignore
때 전역 제외 파일로 사용하는 것이 고통 스럽다는 것을 알았습니다 . 전역 적으로 무시하고 싶지 않은 홈 디렉토리에서 제외하려는 파일이 있습니다 . ~/.gitexcludes
대신 동일한 지시문을 통해 사용 합니다.core.excludesfile
이 문제를 해결하는 가장 좋은 해결책은 시스템의 모든 자식 저장소에서 이러한 파일을 전역 적으로 무시하는 것입니다. 다음과 같은 전역 gitignore 파일을 생성하면됩니다 :
vi ~/.gitignore_global
다음과 같은 파일 무시 규칙 추가 :
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
이제이 파일을 전역 git 설정에 추가하십시오 :
git config --global core.excludesfile ~/.gitignore_global
편집하다:
아이콘은 응용 프로그램 자산으로 커밋해야 할 수 있으므로 제거되었습니다.
터미널을 열고 "cd <ProjectPath>"를 입력하십시오.
기존 파일을 제거하십시오.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
이거 추가 해봐 .DS_Store
"ctrl + x"입력
"y"를 입력하십시오
파일을 저장하려면 입력하십시오
git add .gitignore
git commit -m '.DS_Store removed.'
nano .gitignore
존재하지 않는 경우 파일을 생성하는 경우,이 명령은 프로젝트 루트 폴더에서 실행되어야합니다
최고 투표 답변은 훌륭하지만 나와 같은 신인을 돕는 방법은 다음과 같습니다 .gitignore 파일을 만들고, 편집하고, 저장하고, git에 이미 추가했을 수있는 파일을 제거한 다음 파일을 Github으로 푸시하는 방법이 있습니다.
.gitignore 파일 만들기
.gitignore 파일을 만들려면 touch
지정된 이름으로 빈 파일을 만드는 파일 만 있으면됩니다. 다음 명령을 사용할 수 있도록 .gitignore라는 파일을 만들고 싶습니다.
touch .gitignore
파일 무시
이제 git에게 DS Store 파일을 무시하도록 지시하는 행을 .gitignore에 추가해야합니다. nano 편집기를 사용하여이 작업을 수행 할 수 있습니다.
nano .gitignore
Nano는 나가는 방법에 대한 지침이 포함되어 있기 때문에 좋습니다. ( Ctrl- O저장, 종료 Ctrl- X)
이 Github 요지 의 아이디어 중 일부를 복사하여 붙여 넣으면 무시할 공통 파일이 나열됩니다. 이 질문에 대답하기 위해 가장 중요한 것은 다음과 같습니다.
# OS generated files #
######################
.DS_Store
.DS_Store?
#은 주석이며 파일이 커질수록 파일을 정리하는 데 도움이됩니다.
이 Github 기사 에는 일반적인 아이디어와 지침이 있습니다.
git에 이미 추가 된 파일을 제거하십시오
마지막으로 디렉토리에서 해당 DS Store 파일을 실제로 제거해야합니다.
최고 투표 답변에서이 훌륭한 명령을 사용하십시오. 이것은 디렉토리의 모든 폴더를 통과하고 git에서 해당 파일을 제거합니다.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
gitgitore를 Github에 푸시
마지막 단계에서는 실제로 .gitignore 파일을 커밋해야합니다.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
를 사용하여 삭제 git-rm
한 다음 .DS_Store를 추가 하여 다시 추가되는 .gitignore
것을 중지하십시오. blueharvest 를 사용 하여 모두 함께 생성되는 것을 막을 수도 있습니다
모든 폴더와 하위 폴더에서 DS_Store 파일을 제거하려는 경우 :
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
다음과 같이 무시하십시오.
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 1.7.4.4를 실행하는 Mac 10.7 시스템에있었습니다.
찾아서 제거하십시오.
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
또한 전역 core.excludes 파일을 설정하여 모든 리포지토리에서 .DS_Store를 무시합니다.
먼저 파일을 만듭니다 (없는 경우).
touch ~/.gitignore
그런 다음 다음 줄을 추가하고 저장하십시오.
.DS_Store
이제 파일을 전체적으로 존중하도록 git을 설정하십시오 :
git config --global core.excludesfile ~/.gitignore
나는 파티에 조금 늦었지만 좋은 대답이 있습니다. .DS_Store 파일을 제거하려면 터미널 창에서 다음 명령을 사용하지만 'find'가있는 파일을 삭제하는 데 매우주의하십시오. -name 옵션과 함께 특정 이름을 사용하는 것이보다 안전한 방법 중 하나입니다.
cd directory/above/affected/workareas
find . -name .DS_Store -delete
이전과 이후에 단순히 나열하려면 "-delete"를 생략 할 수 있습니다. 그들이 사라 졌다는 것을 확신시켜 줄 것입니다.
~ / .gitignore_global 조언과 관련하여 여기에주의하십시오. 멋진 파일을 각 작업 영역의 최상위 레벨 내에서 .gitignore에 배치하고 커밋하여 리포지토리를 복제하는 사람이 사용하면 이점을 얻을 수 있습니다.
이것은 작동합니다 :
find . -name "*.DS_Store" -type f -exec git-rm {} \;
를 .DS_Store
포함하여 이름이으로 끝나는 모든 파일을 삭제합니다 ._.DS_Store
.
"*.DS_Store"
별표가 find
쉘에 의해 확장되지 않고 전달되도록해야합니다 .
이 문제를 해결하기위한 몇 가지 솔루션이 있습니다. .DS_Store 파일을 작성하지 않으려면 OS X Finder를 사용하여 폴더를 보지 마십시오. 폴더를 보는 다른 방법은 UNIX 명령 줄을 사용하는 것입니다. .DS_Store 파일을 제거하기 위해 DS_Store Terminator라는 타사 제품을 사용할 수 있습니다. 전체 시스템에서 .DS_Store 파일을 삭제하기 위해 UNIX 쉘 명령을 사용할 수 있습니다. 응용 프로그램 : 유틸리티에서 터미널 실행 UNIX 쉘 프롬프트에서 다음 UNIX 명령을 입력하십시오. sudo find / -name ".DS_Store"-depth -exec rm {} \; 암호를 묻는 메시지가 나타나면 Mac OS X 관리자 암호를 입력하십시오.
이 명령은 전체 시스템을 통해 파일 시스템의 루트 (/)에서 시작하여 모든 .DS_Store를 찾아서 제거합니다. 예약 된 작업으로 실행되도록이 명령을 구성하려면 아래 단계를 수행하십시오. 응용 프로그램 : 유틸리티에서 터미널 시작 UNIX 쉘 프롬프트에서 다음 UNIX 명령을 입력하십시오.
sudo crontab -e 암호를 입력하라는 메시지가 표시되면 Mac OS X 관리자 암호를 입력하십시오. vi 편집기에서 키보드의 문자 I을 한 번 누르고 다음을 입력하십시오.
15 1 * * * 루트 찾기 / -name ".DS_Store"-depth -exec rm {} \;
이를 crontab 항목이라고하며 다음 형식을 갖습니다.
분 시간 DayOfMonth 월 DayOfWeek 사용자 명령.
crontab 항목은 매일 오전 1시 15 분에 root라는 계정으로 시스템에서 명령이 자동으로 실행됨을 의미합니다.
이 명령은 find에서 끝까지 시작합니다. 시스템이 실행되고 있지 않으면이 명령이 실행되지 않습니다.
항목을 저장하려면 Esc 키를 한 번 누른 다음 Shift + z + z를 동시에 누르십시오.
참고 : 4 단계의 정보는 vi 편집기 전용입니다.
이것을 파일에 추가하십시오.
#Ignore folder mac
.DS_Store
이것을 저장하고 커밋하십시오.
git add -A
git commit -m "ignore .DS_Store"
그리고 지금 당신은 모든 커밋에 대해 이것을 무시합니다.