Plik .gitignore, gdzie mam go umieścić w moim projekcie xcode?

102

Chcę, aby git zignorował mój UserInterfaceState.xcuserstateplik w moim projekcie XCode4, ale gdzie powinienem umieścić ten .gitignoreplik? Czy znajduje się w .gitfolderze? czy na zewnątrz? .gitJest w tym samym folderze z ProjectName.xcodeprojplikiem

Mauricio Alberto Barragn Huert
źródło
możliwy duplikat Gdzie należy plik .gitignore?
Pavan Gupta

Odpowiedzi:

124

Możesz mieć .gitignorew każdym katalogu swojego projektu.

Jednak najlepszą praktyką jest umieszczenie jednego .gitignorepliku w katalogu głównym projektu i umieszczenie w nim wszystkich plików, które chcesz zignorować, na przykład:

ignoredFile.whatever
ignoredDirectory/*
directory/ignoredFileInsideDirectory
.svn

Po utworzeniu .gitignorepliku ignorowane pliki, które mają zmiany lub są nowe w repozytorium, nie będą wyświetlane jako oczekujące na zatwierdzenie.

Możesz także mieć jeden globalny lokalny plik ignorowania git, który będzie zarządzać wszystkimi repozytoriami git.

git config --global core.excludesfile ~/.gitignore_global

Ta alternatywa jest szczególnie interesująca w przypadku ignorowanych plików, które nie są związane z projektem, takich jak pliki związane z IDE i tak dalej.

Daniel Ribeiro
źródło
1
Ten plik .gitignore powinien zostać dodany w źródle lub w kopii głównej / lokalnego repozytorium?
Adil
1
Lokalnie (oczywiście w pewnym momencie zamierzasz wypchnąć go do początku).
Daniel Ribeiro
21

Istnieją sposoby na ignorowanie plików w git:

  1. Globalne ignorowanie git: - W tym podejściu twoje niestandardowe reguły zostaną zastosowane do każdego katalogu git na twoim komputerze. Zwykle ten plik może zostać utworzony w ~/.gitignore_globalścieżce. Takie podejście jest dobre, jeśli chcesz wykluczyć niektóre pliki typu, które są generowane przez system operacyjny lub inne narzędzia do rejestrowania, wypłacania pieniędzy itp.
  2. Git ignore dla poszczególnych repozytoriów: - W tym podejściu niestandardowe reguły zostaną zastosowane do określonego katalogu git na twoim komputerze. Lokalne reguły dla poszczególnych repozytoriów można dodać do .git/info/excludepliku w repozytorium. Reguły określone w tym pliku nie zostaną zatwierdzone, co oznacza, że ​​nie będą udostępniane innym. Ogólnie to podejście jest przydatne, aby zapobiec przesyłaniu plików generowanych lokalnie. Na przykład dla plików utworzonych przez Twojego edytora.
  3. Per path git ignore: - W tym przypadku niestandardowe reguły zostaną zastosowane do określonej ścieżki podrzędnej repozytoriów git. Możesz tworzyć .gitignorew dowolnej ścieżce podrzędnej określonego repozytorium. To podejście jest zwykle używane do ignorowania niektórych typów plików tylko w określonym folderze określonego repozytorium. Chociaż te pliki można dodać do kontroli wersji przez inne ścieżki i inne repozytoria.

Tak więc, moja sugestia jest taka, że ​​jeśli chcesz zignorować swój określony plik ( UserInterfaceState.xcuserstate) we wszystkich repozytoriach, najlepszym podejściem jest użycie podejścia globalnego ignorowania git. Jeśli jednak twój plik jest generowany tylko w określonym repozytorium, możesz użyć podejścia git ignore dla każdego repozytorium.

Aby uzyskać więcej informacji, przeczytaj ten wspaniały wpis na blogu. A tam za specyficznego języka git ignorują zasady może być założony tutaj . I możesz automatycznie generować ogólne reguły ignorowania git dla określonego języka, narzędzia lub systemu operacyjnego, używając tej strony internetowej .

Khamidulla
źródło
20

Plik .gitignore należy umieścić w katalogu głównym projektu.

heinrich5991
źródło
12

gdzie powinienem umieścić .gitignoreplik? czy znajduje się w folderze .git?

Nie ma .gitignorew .gitfolderze.
Jest to jednak .git/info/excludeplik, który pozwala wykluczyć plik lokalnie, ogólnie rzecz biorąc, gdy chcesz wykluczyć plik tylko dla tego konkretnego repozytorium (z aliasem takim jak ten ):

git config alias.exclude "!sh -c 'echo \"$1\" >> .git/info/exclude' -"
git exclude UserInterfaceState.xcuserstate

Jeśli chcesz wykluczyć ten plik dla wszystkich podobnych projektów, o czym wspomniał Elnur Abdurrakhimov w swojej odpowiedzi , wyklucz go globalnie.

echo UserInterfaceState.xcuserstate >> ~/.gitignore

Ale, jak wspomniano w „ Czy musimy rejestrować * .xcuserstate? ”, Jeśli jest to typ pliku, który powinien zostać zignorowany przez dowolnego użytkownika tego repozytorium, w rzeczywistości utworzyłbym wersję .gitignore na początku repozytorium, o treści podobnej do:

*.xcuserstate 

W ten sposób żaden użytkownik tego repozytorium nie zda sobie nawet sprawy, że ten plik istnieje i jest generowany (jakkolwiek się nazywa): nie pojawi się git statusnigdy.

Lub możesz całkowicie zignorowaćxcuserdata/ (w globalnym .gitignorelub wersjonowanym, takim jak ogólnyObjective-C.gitignore plik GitHub .

VonC
źródło
Jesteś legendą GIT! Twoje odpowiedzi są zawsze najbardziej przydatne.
Jad Chahine,
@JadChahine Dziękuję. Cieszę się, że mogłem pomóc (przynajmniej pisanie tych odpowiedzi pomoże mi nauczyć się git)
VonC
@tymac Niezupełnie;) Po prostu regularnie odwiedzam ( meta.stackexchange.com/questions/122976/… )
VonC
9

Należy nie umieścić narzędzie specyficzne pliki do projektu .gitignorepliku - chyba że wymagane jest narzędzie do wykorzystania przez każdego autora projektu.

Zamiast tego utwórz osobisty .gitignoreplik globalny w swoim katalogu domowym i aktywuj go:

git config --global core.excludesfile ~/.gitignore

Teraz możesz umieścić w swoim .gitignorepliku wszystkie pliki wygenerowane przez narzędzia programistyczne .

Elnur Abdurrakhimov
źródło
6

zazwyczaj najlepszym rozwiązaniem jest umieszczenie .gitignorepliku w katalogu głównym projektu

Ajey
źródło