etc./StackOverFlow

Git 리포지토리에서 .DS_Store 파일을 제거하려면 어떻게 해야 합니까?

청렴결백한 만능 재주꾼 2022. 3. 4. 07:56
반응형

질문자 :John Topley


Git 저장소에서 성가신 Mac OS X .DS_Store



저장소에서 기존 파일을 제거합니다.

 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 >"를 입력합니다.

  1. 기존 파일 제거: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. .DS_Store

  4. "ctrl + x"를 입력하십시오

  5. "y"를 입력하십시오

  6. 파일을 저장하려면 입력하세요.

  7. git add .gitignore

  8. 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

반응형