Git 저장소에서 성가신 Mac OS X .DS_Store
질문자 :John Topley
저장소에서 기존 파일을 제거합니다.
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!'
benzado
benzado와 webmat의 답변을 결합하고 git rm
업데이트하고 repo에 없는 파일을 찾을 때 실패하지 않고 모든 사용자가 일반적으로 붙여넣을 수 있도록 합니다.
# 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
Turadg
이 문제를 해결하는 가장 좋은 방법은 시스템의 모든 git repos에서 이러한 파일을 전역적으로 무시하는 것입니다. 이것은 다음과 같은 전역 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
편집하다:
응용 프로그램 자산으로 커밋해야 할 수 있는 아이콘을 제거했습니다.
Nerve
일부 상황에서는 전역적으로 일부 파일을 무시할 수도 있습니다. 저에게 .DS_Store는 그 중 하나입니다. 방법은 다음과 같습니다.
git config --global core.excludesfile /Users/mat/.gitignore
(또는 원하는 파일)
그런 다음 저장소의 .gitignore처럼 파일을 편집합니다. 절대 경로를 사용해야한다고 생각합니다.
webmat
변경 사항이 있어 파일을 제거할 수 없는 경우 다음을 사용하십시오.
git rm --cached -f *.DS_Store
Reggie Pinkham
최고 투표 답변은 굉장하지만 저와 같은 초보자를 돕는 방법은 .gitignore 파일을 만들고 편집하고 저장하고 이미 git에 추가했을 수 있는 파일을 제거한 다음 파일을 Github에 푸시하는 방법입니다.
.gitignore 파일 생성
.gitignore 파일을 만들려면 지정된 이름의 빈 파일을 만드는 파일을 touch
다음 명령을 사용할 수 있도록 .gitignore라는 파일을 만들고 싶습니다.
touch .gitignore
파일 무시
이제 .gitignore에 DS Store 파일을 무시하도록 git에 지시하는 줄을 추가해야 합니다. 나노 편집기를 사용하여 이를 수행할 수 있습니다.
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
Github에 .gitignore 푸시
마지막 단계에서 실제로 .gitignore 파일을 커밋해야 합니다.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
Joshua Dance
터미널을 열고 "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.'
Karthick Vadivel
작동하려면 위의 git-rm을 git rm으로 변경해야 했습니다.
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
David Kahn
다음 명령을 사용하여 기존 파일을 제거합니다.
find . -name '*.DS_Store' -type f -delete
그런 다음 .DS_Store
를 .gitignore
Sunny
모든 폴더 및 하위 폴더에서 DS_Store 파일을 제거하려는 경우:
이미 커밋된 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
user7718859
git-rm
사용하여 삭제한 다음 .DS_Store를 .gitignore
에 추가하여 다시 추가되지 않도록 합니다. 또한 blueharvest 를 사용하여 모두 함께 생성되는 것을 막을 수 있습니다.
Nathan
이 파일을 영원히 없애고 다시는 걱정할 필요가 없는 가장 좋은 방법은
전역 .gitignore 파일을 만듭니다.
echo .DS_Store >> ~/.gitignore_global
그리고 모든 리포지토리에 대해 이 파일을 사용하고 싶다고 git에 알려주세요.
git config --global core.excludesfile ~/.gitignore_global 그리고 그게 다야! .DS_Store가 방해가 됩니다.
Kasem777
때때로 .DS_Store 파일은 원격 저장소에 있지만 로컬 프로젝트 폴더에는 표시되지 않습니다. 이 문제를 해결하려면 캐시된 모든 파일을 제거하고 다시 추가해야 합니다.
1단계: 이것을 .gitignore 파일에 추가합니다.
# Ignore Mac DS_Store files .DS_Store **/.DS_Store
2단계: 다음 명령을 사용하여 캐시된 파일을 제거하고 다시 추가합니다.
git rm -r --cached . git add . git commit -am "Removed git ignored files" git push -f origin master
RajVimalC
다음은 나를 위해 가장 잘 작동했습니다. 일치하지 않는 파일 및 로컬 수정이 있는 파일을 처리했습니다. 참고로 이것은 git 1.7.4.4를 실행하는 Mac 10.7 시스템에 있었습니다.
찾기 및 제거:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
또한 전역 core.excludesfile을 설정하여 모든 리포지토리에서 .DS_Store를 전역적으로 무시합니다.
먼저 파일을 만듭니다(아직 없는 경우).
touch ~/.gitignore
그런 다음 다음 줄을 추가하고 저장합니다.
.DS_Store
이제 파일을 전역적으로 존중하도록 git을 구성합니다.
git config --global core.excludesfile ~/.gitignore
jordantbro
나는 파티에 조금 늦었지만 좋은 대답을했습니다. .DS_Store 파일을 제거하려면 터미널 창에서 다음 명령을 사용하되 '찾기'로 파일을 삭제할 때는 매우 주의해야 합니다. -name 옵션과 함께 특정 이름을 사용하는 것이 더 안전한 사용 방법 중 하나입니다.
cd directory/above/affected/workareas find . -name .DS_Store -delete
단순히 전후에 나열하려면 "-delete"를 생략할 수 있습니다. 그것은 그들이 사라졌다는 것을 당신을 안심시킬 것입니다.
~/.gitignore_global 조언과 관련하여: 여기에서 주의하십시오. 그 멋진 파일을 각 작업 영역의 최상위 수준에 있는 .gitignore에 넣고 커밋하여 저장소를 복제하는 모든 사람이 사용 이점을 얻을 수 있도록 합니다.
zeozod
나는 snipplr 의 다음 줄이 로컬 수정이 있는 것을 포함하여 .DS_Store
를 지우는 데 가장 효과적이라는 것을 발견했습니다.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
옵션은 어쨌든 재생산될 것이기 때문에 .DS_Store
그리고 위에서 언급한 것처럼 프로젝트 루트의 .gitignore 파일에 .DS_Store
그러면 더 이상 (repos의) 시야에 없을 것입니다.
manat
이것은 작동합니다:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
._.DS_Store
포함하여 .DS_Store
끝나는 모든 파일을 삭제합니다.
John Topley
어떤 이유로 위의 어느 것도 내 Mac에서 작동하지 않았습니다.
내 솔루션은 터미널 실행에서입니다.
rm .DS_Store
그런 다음 다음 명령을 실행합니다.
git pull origin master
Invincible
1 단계
디렉토리(하위 디렉토리 포함)의 .DS_Store
파일을 제거합니다.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
2 단계
루트 디렉터리 와 모든 하위 디렉터리의 DS_Store 파일이 git으로 이동하는 것을 방지하려면 이것을 .gitignore
**/.DS_Store
자식 문서에서 :
- 선행 "**" 다음에 슬래시가 있으면 모든 디렉토리에서 일치함을 의미합니다. 예를 들어 "**/foo"는 패턴 "foo"와 동일하게 파일 또는 디렉토리 "foo"와 일치합니다. "**/foo/bar"는 디렉토리 "foo" 바로 아래에 있는 파일 또는 디렉토리 "bar"와 일치합니다.
stevec
리포지토리를 초기화할 때 다음을 포함하는 git 명령을 건너뜁니다.
-u
그리고 그것은 문제가되어서는 안됩니다.
dav1dhunt
이것은 위의 두 가지 답변의 조합으로 저에게 효과적이었습니다.
- $ git rm --cached -f *.DS_Store
- $ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store'
- $ git push 오리진 마스터 --force
JLunceford
무시된 파일 제거:
(.DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Cubiczx
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store" $ git push origin master --force
JZ.
이것을 .gitignore 파일에 추가하십시오.
#Ignore folder mac .DS_Store
이것을 저장하고 커밋하십시오
git add -A git commit -m "ignore .DS_Store"
이제 모든 커밋에 대해 이것을 무시합니다.
Ezequiel García
touch .gitignore
명령을 사용하여 .gitignore
파일을 만듭니다.
거기에 다음 줄을 추가하십시오
.DS_Store
.gitignore
파일을 저장한 다음 git repo에 푸시합니다.
2rahulsk
이 문제를 해결하기 위한 몇 가지 솔루션이 있습니다. .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 * * * 루트 찾기 / -이름 ".DS_Store" -깊이 -exec rm {} \;
이를 crontab 항목이라고 하며 형식은 다음과 같습니다.
분 시 DayOfMonth 월 DayOfWeek 사용자 명령.
crontab 항목은 root라는 계정에 의해 매일 오전 1시 15분에 시스템에 의해 명령이 자동으로 실행됨을 의미합니다.
이 명령은 find 에서 까지 시작됩니다. 시스템이 실행되고 있지 않으면 이 명령이 실행되지 않습니다.
항목을 저장하려면 Esc 키를 한 번 누른 다음 Shift + z+ z를 동시에 누릅니다.
참고: 4단계의 정보는 vi 편집기 전용입니다.
vinny
로컬에서 .DS_STORE
를 제거할 필요가 없습니다.
.gitignore
파일에 추가하기만 하면 됩니다.
.gitignore 파일은 프로젝트에서 무시할 파일이나 폴더를 Git에 알려주는 텍스트 파일일 뿐입니다.
명령
-
nano .gitignore
-
.DS_Store
CTRL+X > y > Hit Return
클릭하십시오. -
git status
변경 사항을 마지막으로 보려면 -
git add .gitignore
-
git commit -m 'YOUR COMMIT MESSAGE'
-
git push origin master
Wael Assaf
내가 만든:
git checkout -- ../.DS_Store
(# 파일에 대한 로컬 변경 사항을 (영구적으로) 폐기) 그리고 제대로 작동했습니다!
Fernando Comet
출처 : http:www.stackoverflow.com/questions/107701/how-can-i-remove-ds-store-files-from-a-git-repository
'etc. > StackOverFlow' 카테고리의 다른 글
JavaScript에서 날짜 형식 지정에 대한 문서는 어디에서 찾을 수 있습니까? (0) | 2022.03.07 |
---|---|
목록 이해로 사전 만들기 (0) | 2022.03.04 |
MySQL에서 AUTO_INCREMENT를 재설정하는 방법 (0) | 2022.03.04 |
C++에서 가상 함수가 필요한 이유는 무엇입니까? (0) | 2022.03.04 |
'정적 읽기 전용' 대 'const' (0) | 2022.03.04 |