Bij het gebruik van Git vinden we het fijn om bestanden zoals logs, tijdelijke bestanden, gecompileerde tussenbestanden, enzovoort niet naar de coderepository te laten worden gestuurd, dus moeten we de bijbehorende negeerregels instellen om de commit van deze bestanden te negeren.
Git negeert de methode van bestandscommits
Er zijn drie manieren om bestanden te negeren die je niet wilt committen in Git.
Definieer het .gitignore-bestand in je Git-project
Dit wordt beheerd door een .gitignore-bestand te definiëren in een map in het project, waar de bijbehorende neger-regels zijn gedefinieerdHuidige mapHet Git-commitgedrag van het bestand onder de .gitignore-bestanden kunnen worden ingediend in openbare repositories, wat betekent dat alle ontwikkelaars onder het project een gedefinieerde set neger-regels delen. In het .gitingore-bestand specificeer je een negeerregel op elke regel, volgens de bijbehorende syntaxis. Bijvoorbeeld:
Specificeer de uitsluitingsbestanden in de instellingen van het Git-project
Dit is slechts een tijdelijke specificatie van het gedrag van het project, wat vereist dat je het .git/info/exlysie-bestand onder het huidige project bewerkt, en vervolgens het bestand schrijft waaraan de commit moet worden genegeerd. Let op dat de rootmap van de genegeerde bestanden die op deze manier zijn gespecificeerd, de projectwortel is.
Een .gitignore-bestand dat de Git-globaal definieert
Naast het kunnen definiëren van .gitignore-bestanden in je project, kun je ook een globale git .gitignore-bestand instellen om het gedrag van alle Git-projecten te beheren. Deze aanpak wordt niet gedeeld door verschillende projectontwikkelaars en is een gedrag op het niveau van de Git-applicatie bovenop het project.
Dit vereist ook het aanmaken van een bijpassend .gitignore-bestand, dat overal geplaatst kan worden. Configureer vervolgens Git met het volgende commando:
Git negeert regels
Voor gedetailleerde negeringsregels, raadpleeg de officiële Engelse documentatie op het adres:De hyperlink-login is zichtbaar.
Git negeert regelprioriteit
In het .gitingore-bestand specificeer je een negeerregel voor elke regel, en Git controleert op meerdere bronnen bij het negeren van regels, met de volgende prioriteit (van hoogste naar laagste):
- Lees de beschikbare negeerregels van de opdrachtregel
- De regels gedefinieerd door de huidige directory
- De regels die door de oudermap worden gedefinieerd, zijn recursief
- $GIT_DIR/info/exclude bestand
- core.excludesfile
Git negeert regelafstemmingssyntaxis
In het .gitignore-bestand is de syntaxis voor de negeerregel voor elke regel als volgt:
- Ruimtes die niet overeenkomen met willekeurige bestanden kunnen als scheiders worden gebruikt en kunnen worden ontsnapt met backslashes
- # De bestandsidentificatie-opmerking aan het begin kan worden omzeild met een backslash
- ! De schema-identificatie aan het begin is negatief, en het bestand wordt opnieuw toegevoegd; als de oudermap van het bestand is uitgesloten, gebruik dan ! zal niet meer worden opgenomen. Ontsnappen kan worden gedaan met een backslash
- / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
- / 开始的模式匹配项目跟目录
- Als een patroon geen slash bevat, komt het overeen met de inhoud ten opzichte van het huidige .gitignore-bestandspad, en als het patroon niet in het .gitignore-bestand zit, relatief ten opzichte van de projectwortel
- ** Matching multi-level catalogi kunnen aan het begin, midden en einde worden gebruikt
- ? Universele matching van individuele karakters
- [ ] Universele matchlijst van individuele personages
Veelvoorkomende voorbeelden van matching:
- bin/: negeert de bin-map onder het huidige pad, alles onder die map wordt genegeerd, niet het bin-bestand
- /bin: 忽略根目录下的bin文件
- /*.c: 忽略 cat.c,不忽略 build/cat.c
- debug/*.obj: Negeer debug/io.obj, negeer debug/common/io.obj niet en tools/debug/io.obj
- **/foo: negeer /foo, a/foo, a/b/foo, enzovoort
- a/**/b: negeer a/b, a/x/b, a/x/y/b, enzovoort
- !/bin/run.sh: Negeer run.sh bestanden in de bin-map niet
- *.log: Negeer alle .log bestanden
- config.php: 忽略当前路径的 config.php 文件
.gitignore-regel treedt niet in werking
.gitignore kan alleen bestanden negeren die oorspronkelijk niet zijn gevolgd, en het wijzigen van .gitignore is ineffectief als sommige bestanden al in versiebeheer zijn opgenomen.
De oplossing is om de lokale cache te verwijderen (deze te veranderen in de niet-gevolgde toestand) voordat je committeert:
(Einde)
|