UserInterfaceState.xcuserstate를 무시할 수 없습니다


301

Xcode 4 프로젝트 버전 제어를 위해 Git을 사용하고 있습니다. 나는 명시 적으로 추가 한 ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate.gitignore,하지만 힘내는 그것을 무시하지 않습니다. 왜 그런 아이디어가 있습니까?

답변:


669

Git은 이미 파일을 추적하고있을 것입니다.

로부터 gitignore 워드 프로세서 :

현재 추적되는 파일 추적을 중지하려면 git rm --cached를 사용하십시오 .

이것을 사용 하여 정보 [project][username]함께 사용하십시오.

git rm --cached [project].xcodeproj/project.xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removed file that shouldn't be tracked"

또는 -a옵션을 사용하여 git commit수정 또는 삭제 된 모든 파일을 추가 할 수 있습니다 .

git에서 파일을 제거하면을 존중합니다 .gitignore.


3
이 문제가 있지만 xcuserstate 파일을 제거하려고하면 '파일과 일치하지 않습니다'라고 표시됩니다. 무슨 일이야?
Rob Caraway

@RobCaraway
MaxGabriel

24
이것은 나를 도왔다 : 1) xcode를 종료; 2) 프로젝트 디렉토리로 이동하여 터미널 앱에서 "ls -la"를 수행하여 .git 및 .gitignore 파일을 확인하십시오. 3) 위 예제에서 "ProjectFolder"를 프로젝트 이름으로 변경 하십시오 . 4) matt가 보여주는 두 가지 자식 명령을 수행하십시오. 5) XCode를 다시 시작하고 커밋을 수행하고 xcuserstate 파일이 더 이상 나열되지 않는지 확인하십시오.
Brainware

1
svn에서 동등한 작업을 수행하는 방법을 알고 있습니까? svn이 파일을 무시하지 않는 동일한 문제가 발생합니다.
bpn

감사합니다 @Brainware !! 당신의 제안 덕분에 마침내 효과가있었습니다. Xcode를 미리 닫는 것이 매우 중요하다고 생각합니다.
Jay Versluis

52

무시 된 파일이 추적되지 않은 목록에 계속 표시되는 경우 항목 git clean -f -d 을 지우는 데 사용할 수 있습니다 .

1.

git rm --cached {YourProjectFolderName}.xcodeproj/project.xcworkspace/xcuserdata/{yourUserName}.xcuserdatad/UserInterfaceState.xcuserstate

2.

git commit -m "Removed file that shouldn't be tracked"

3. 경고 먼저 시도하십시오 git clean -f -d --dry-run. 그렇지 않으면 커밋되지 않은 변경 사항이 손실 될 수 있습니다.

그때: git clean -f -d


github은 이제이 파일을 포함하는 기본 .gitignore 파일을 제공하지만 여전히 단계를 수행해야합니다. 성가신 종류
cspam

3
고맙습니다, git clean -f -d 방금 삭제했습니다. 내 프로젝트의 xcodeproj 및 기타 파일 ...
Jeremy Luisetti

1
강력하게 실행 자식 깨끗하고, 즉, 전에 --dry-실행 플래그를 사용하는 것이 좋습니다 것 git clean -f -d --dry-run 어떻게되는지
zero0cool

무엇을 git clean -f -d합니까?
allenlinli

git clean -f -d커밋되지 않은 파일 변경이 있는 경우를 사용하지 마십시오 ! 나는 그것을 사용했고 이미 작성된 컨텐츠로 새로 작성된 파일을 제거했습니다! :) 먼저 커밋 한 다음 깨끗하게 정리
kalafun

44

모든 답변은 훌륭하지만 다른 Mac (가정 및 사무실) 에서 작업하는 경우 모든 사용자에 대해 제거되는 답변입니다.

git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"

20

친구가이 놀라운 사이트 https://www.gitignore.io/를 보여주었습니다 . 선택한 IDE 또는 기타 옵션을 입력하면 gitignore유용한 무시로 구성된 파일 이 자동으로 생성되며 그 중 하나는입니다 xcuserstate. gitignore다운로드하기 전에 파일을 미리 볼 수 있습니다 .


17

여기에 언급 된 모든 작업을 수행 한 후에도 파일이 계속 표시되는 경우 Xcode 설정에서이 확인란을 선택 해제해야합니다.

여기에 이미지 설명을 입력하십시오



7

GitHub를 사용하는 경우 몇 가지 데모 및 바로 가기가 있습니다. 기본 아이디어는 동일합니다.

1. 이와 같이 열린 터미널

여기에 이미지 설명을 입력하십시오

2. 아래 명령을 터미널에 붙여 넣고 공백을 넣은 다음 .xcuserstate 파일의 경로를 다음과 같이 붙여 넣습니다.

git rm --cached 여기에 이미지 설명을 입력하십시오

3. 올바른 자식을 무시하고 코드를 커밋했는지 확인하십시오. :)

여기에 이미지 설명을 입력하십시오


4

다음은 git history에서 문제의 파일을 재귀 적으로 제거하는 방법에 대한 아주 좋은 설명입니다. http://help.github.com/remove-sensitive-data/

그렇지 않으면 도구는 처음에는 확인해서는 안되는 거대한 파일에 diff를 표시하려고 시도하는 동안 '멈춤'경향이 있기 때문에 매우 유용합니다 ...

가장 큰 것들을 제거하기 위해 당신이 할 수있는 것 (짧게)은 다음과 같습니다.

cd YourProject
git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r YourProject.xcodeproj/project.xcworkspace' HEAD
# see what you want to do with your remote here...
# you can: git push origin master --force
# or you can delete it and push a fresh new one from your cleaned-up local...
rm -rf .git/refs/original
git gc --prune=now
git gc --aggressive --prune=now

나를 위해 아주 훌륭하게 일했습니다 :)


2

나를 위해 아무것도 효과가 없었지만

이 줄을 gitignore에 추가하십시오.

*.xcuserdata

1

이것은 나를 위해 작동

  1. project.xcworkspace터미널에서 프로젝트 파일이 들어있는 폴더를 엽니 다 .

  2. 이 명령을 작성하십시오. git rm --cached *xcuserstate

파일이 제거됩니다.


0

xcode 8.3.3의 경우 위의 코드를 시도하고 확인했습니다.이 경우에는이와 같이 명령을 변경해야합니다.

먼저 다음을 사용하여 .gitignore 파일을 만들 수 있습니다

 touch .gitignore

그 후이 명령을 사용하여 모든 userInterface 파일을 삭제할 수 있으며이 명령을 사용하면 .gitignore 파일을 존중합니다.

 git rm --cached [project].xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
 git commit -m "Removed file that shouldn't be tracked"

-1

이런 식으로 쓰는 것이 낫다고 생각합니다.

git rm --cache * / /UserInterfaceState.xcuserstate**

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.