2015-09-09 20 views
12

Utworzono plik .gitignore_global i zapisz go w katalogu, w którym mam plik .gitconfig..gitignore_global nie działa, nawet .gitconfig pokazuje .gitignore_global

Po tym czasie użyłem tego polecenia.

git config --global core.excludefile .gitignore_global 

Potem sprawdził moje plik .gitconfig za pomocą polecenia

cat .gitconfig 

To pokazuje mi prowadzić jako

[user] 
     email = [email protected] 
     name = Hemant Parihar 
[gui] 
     recentrepo = C:/Users/heman/gitprojects 
     recentrepo = E:/Inspiration/developerquery 
[filter "lfs"] 
     clean = git-lfs clean %f 
     smudge = git-lfs smudge %f 
     required = true 
[core] 
     excludesfile = .gitignore_global 

To jasne, pokazuje mi w [rdzeń] sekcji, tam to .gitignore file. Ale w moim repozytorium projektu utworzyłem plik, który powinien zostać zignorowany podczas konfiguracji .gitignore_global. Ale to nie powinno się zdarzyć. Ale kiedy użyłem lokalnego pliku .gitignore do mojego projektu, działa dobrze i ignoruje pliki, które nie powinny być śledzone.

Mój projekt katalogu repozytorium jest E:/Inspiration/server/explore_california podczas .gitignore_global jest w moim katalogu domowym (gdzie plik .gitconfig jest obecny.).

Sprawdziłem this link, ale nie znalazłem niczego, co byłoby pomocne.

+0

Jakiś konkretny powód, dla którego nie należy używać lokalnego pliku .gitignore? –

+0

Po prostu chcę przypisać tę regułę do mojego repozytorium. Również gdy użyłem lokalnego pliku .gitignore, działa bardzo dobrze. –

+0

Nie jest to jednak dobry pomysł na pracę zespołową. Będą mieć lokalny .gitignore, ale nie twój globalny. Proszę go używać ostrożnie.Być może to, czego szukasz, to umieszczenie ~/przed twoim plikiem .gitignore_global w pliku .gitconfig: 'excludesfile = ~/.gitignore_global' –

Odpowiedz

18

Droga do globalnego gitignore musi być absolutna, więc można używać rozszerzenia powłoki tutaj i po prostu określić jako ~/.gitignore_global:

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

Aby zrozumieć, co się dzieje, jeśli nie Użyj bezwzględnej ścieżki, musisz zrozumieć, jak działają konfiguracje git: Każde repozytorium ma jedną w .git/config. Ponadto istnieje globalna ~/.gitconfig. Wartości konfiguracji z obu miejsc są scalane (przy ustawieniach lokalnego repozytorium mają pierwszeństwo w przypadku konfliktów), aby utworzyć pojedynczy zestaw ustawień konfiguracyjnych. Możesz je sprawdzić, uruchamiając git config -l w lokalnym repozytorium.

Konfiguracja jest zawsze lokalna dla bieżącego repozytorium. Więc jeśli masz względną ścieżkę do "globalnego" pliku excludesfile, ta ścieżka jest interpretowana relatywnie do twojego repozytorium.

Tak więc z excludesfile = .gitignore_global, Git zajrzy do Twojego lokalnego lokalnego repozytorium dla pliku gitignore_global. I użyłby tego równie dobrze jak normalny .gitignore i repozytorium .git/info/exclude.

Można więc umieścić plik .gitignore_global w każdym repozytorium, a Git go pobierze.

Ponieważ chcesz globalną konfigurację, musisz podać bezwzględną ścieżkę.

+0

tak. To działa. ale chcę wiedzieć, dlaczego to nie działa. git config --global core.excludesfile .gitignore_global –

+0

@HemantParihar Dodano dodatkowe wyjaśnienie, dlaczego bezwzględna ścieżka jest konieczna. – poke

Powiązane problemy