Nie można zignorować UserInterfaceState.xcuserstate


301

Korzystam z kontroli wersji projektu Git for Xcode 4. Ja wyraźnie dodałem ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstatedo .gitignore, ale Git nie zignoruje tego. Wszelkie pomysły, dlaczego tak jest?

Odpowiedzi:


669

Git prawdopodobnie już śledzi plik.

Z dokumentów gitignore :

Aby zatrzymać śledzenie aktualnie śledzonego pliku, użyj git rm --cached .

Użyj tego, zastępując [project]a [username]z informacją:

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

Alternatywnie możesz użyć tej -aopcji, aby git commitdodać wszystkie pliki, które zostały zmodyfikowane lub usunięte.

Po usunięciu pliku z git będzie szanował twój .gitignore.


3
Mam ten problem, ale kiedy próbuję usunąć plik xcuserstate, pojawia się komunikat „nie pasuje do żadnych plików”. Co się dzieje?
Rob Caraway,

Mam ten sam problem co @RobCaraway
MaxGabriel,

24
Pomogło mi to: 1) zamknij xcode; 2) przejdź do katalogu projektu i wykonaj „ls -la” z aplikacji terminalu, aby upewnić się, że widzisz pliki .git i .gitignore; 3) zmień „ProjectFolder” w powyższym przykładzie na nazwę swojego projektu; 4) wykonaj dwa polecenia git, które mat pokazuje; 5) Uruchom ponownie XCode, wykonaj zatwierdzenie i sprawdź, czy pliku xcuserstate nie ma już na liście.
Brainware

1
Masz pomysł, jak zrobić ekwiwalent w svn? Dostaję ten sam problem, w którym svn nie ignoruje pliku
bpn

Dziękuję @Brainware !! W końcu zadziałało dzięki twojej sugestii. Myślę, że wcześniejsze zamknięcie Xcode jest bardzo ważne.
Jay Versluis

52

Jeśli zignorowany plik wciąż pojawia się na liście nieśledzonej, możesz użyć git clean -f -d do wyczyszczenia.

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. OSTRZEŻENIE pierwsza próba git clean -f -d --dry-run , w przeciwnym razie możesz utracić nieprzewidziane zmiany.

Następnie: git clean -f -d


github daje teraz domyślny plik .gitignore, który zawiera ten plik między innymi, ale wciąż musisz wykonać kolejne kroki. rodzaj denerwujący
cspam

3
Dzięki ludzie, git clean -f -d właśnie usunięty. xcodeproj i inne pliki z mojego projektu ...
Jeremy Luisetti

1
Zaleca się użycie flagi --dry-run przed uruchomieniem git clean, tj. git clean -f -d --dry-run Aby zobaczyć, co się stanie
zero0cool

Co ma git clean -f -dzrobić?
allenlinli,

Nie używaj, git clean -f -djeśli masz niezatwierdzone zmiany plików! Użyłem go i usunąłem moje świeżo utworzone pliki z zawartością już utworzoną! :) Więc najpierw zatwierdz, a potem wyczyść
kalafun

44

Cała odpowiedź jest świetna, ale oto ta zostanie usunięta dla każdego użytkownika, jeśli pracujesz na innym komputerze Mac (w domu i biurze)

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

20

Czy znajomy pokazał mi tę niesamowitą stronę https://www.gitignore.io/ . Wpisz IDE wybranego lub innych opcji, a automatycznie wygeneruje gitignoreplik zawierający przydatne ignorowanie, z których jednym jest xcuserstate. Możesz obejrzeć gitignoreplik przed pobraniem.


17

Jeśli plik wyświetla się nawet po wykonaniu wszystkich czynności wymienionych tutaj, upewnij się, że to pole wyboru w ustawieniach Xcode nie jest zaznaczone:

wprowadź opis zdjęcia tutaj



7

Oto kilka wersji demonstracyjnych i skrótów, jeśli używasz GitHub, podstawowe pomysły są takie same.

1. Otwórz terminal w ten sposób

wprowadź opis zdjęcia tutaj

2. Wklej poniższe polecenie do terminala, a następnie spację, a następnie wklej ścieżkę pliku .xcuserstate po prostu w ten sposób

git rm --cached wprowadź opis zdjęcia tutaj

3. Upewnij się, że masz poprawne polecenie git ignore, a następnie potwierdź kod :)

wprowadź opis zdjęcia tutaj


4

Oto bardzo ładne wyjaśnienie, jak rekurencyjnie usunąć te pliki z historii git: http://help.github.com/remove-sensitive-data/

Bardzo przydatne, ponieważ w przeciwnym razie narzędzia „zawieszają się”, próbując pokazać różnicę na tych ogromnych plikach, które nie powinny były być sprawdzane w pierwszej kolejności ...

Oto, co możesz zrobić (krótko), aby pozbyć się największych rzeczy:

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

Pracował dla mnie bardzo ładnie :)



1

To działa dla mnie

  1. Otwórz folder zawierający plik projektu project.xcworkspacez terminala.

  2. Napisz to polecenie: git rm --cached *xcuserstate

Spowoduje to usunięcie pliku.


0

Dla xcode 8.3.3 właśnie sprawdziłem wypróbowałem powyższy kod i zauważyłem, że teraz w tym przypadku musimy zmienić polecenia, aby polubić to

najpierw możesz utworzyć plik .gitignore za pomocą

 touch .gitignore

po tym możesz usunąć cały plik UserInterface za pomocą tego polecenia i za pomocą tego polecenia będzie respektować plik .gitignore.

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

-1

Myślę, że lepiej byłoby tak pisać.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.