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?

Czosnek
źródło

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.

matowy
źródło
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

Xing
źródło
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"
hardikdevios
źródło
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.

Josh Valdivieso
źródło
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

Lukas Kalinski
źródło
14

Po prostu „git clean -f -d” działało dla mnie!

rilar
źródło
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

Fangming
źródło
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 :)

Zoran Simic
źródło
2

Dla mnie nic nie działało, ale to

dodaj tę linię do swojego gitignore

*.xcuserdata
Qadir Hussain
źródło
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.

Mohammed Ali Khaled
źródło
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"
Sachin Nautiyal
źródło
-1

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

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

Hanlei
źródło