
Git-ში ფაილების იგნორირების სამი დონე: .gitignore და მისი ალტერნატივები
ბლოგპოსტი ხსნის, თუ როგორ იგნორირებს Git ფაილებს სამ დონეზე: პროექტში დამატებული .gitignore, კონკრეტული რეპოზიტორიის .git/info/exclude და მანქანის დონეზე მოქმედი გლობალური ფაილი.
Git-ით მომუშავეების უმეტესობამ იცის ფაილების იგნორირების მხოლოდ ერთი გზა — ჩანაწერის დამატება .gitignore ფაილში. nelson.cloud-ის ბლოგპოსტი შეგახსენებს, რომ Git სინამდვილეში იგნორირების სამ დონეს უჭერს მხარს და თითოეული მათგანი სხვადასხვა პრობლემას წყვეტს.
პროექტის დონე: .gitignore
ნაცნობი ვარიანტია რეპოზიტორიის ფესვში მდებარე .gitignore. ის Git-ში კოდთან ერთად ინახება, ამიტომ ყველა კონტრიბუტორი ერთსა და იმავე წესებს იღებს. აქ ჩამოთვლილი ფაილები git-ის ბრძანებების დროს მხედველობაში არ მიიღება — სწორედ ამიტომ რჩება ის ადგილად, სადაც გუნდისთვის საერთო ხმაური იწერება: build-ის შედეგები, დამოკიდებულებები, რედაქტორის დროებითი ფაილები.
რეპოზიტორიის დონე: .git/info/exclude
მეორე ფაილია .git/info/exclude, რომელიც ყველა რეპოზიტორიის .git დირექტორიაშია, მაგრამ მასში შეტანილი ცვლილებები Git-ში არ ინახება. ახალ რეპოზიტორიაში, როგორც წესი, მხოლოდ კომენტარის რამდენიმე ხაზია. ფაილი პირადი, კონკრეტული რეპოზიტორიის გამონაკლისებისთვისაა განკუთვნილი: მაგალითად, notes.txt, რომელიც თქვენთვის სასარგებლოა, მაგრამ პროექტში ადგილი არ აქვს. ასეთი ჩანაწერების აქ დამატება .gitignore-ს სუფთად ინახავს და იმ პრეფერენციებს არ ასაჯაროებს, რომლებსაც სხვები არ იზიარებენ.
მანქანის დონე: ~/.config/git/ignore
მესამე დონე გლობალურია. ფაილი ~/.config/git/ignore home დირექტორიაშია და კომპიუტერზე არსებულ ყველა რეპოზიტორიას ეხება — ის არცერთი პროექტის ნაწილი არ არის. კლასიკური გამოყენება ოპერაციული სისტემის ხმაურია: macOS-ზე ეს ჩვეულებრივ .DS_Store-ია. მდებარეობა კონფიგურირებადია: ბრძანება git config --global core.excludesFile ~/.gitignore_global Git-ს სხვა ფაილზე მიუთითებს, ხოლო git config --global --unset core.excludesFile ნაგულისხმევ პარამეტრს აბრუნებს.
რომელი ფაილი მალავს კონკრეტულ ჩანაწერს
თუ ფაილი Git-ისთვის მოულოდნელად უხილავია, ბრძანება git check-ignore -v ზუსტად იმ წესს გაჩვენებთ, რომელიც დაემთხვა. .DS_Store-ის შემთხვევაში შედეგი შეიძლება იყოს .gitignore:1:.DS_Store, .git/info/exclude:7:.DS_Store ან ~/.config/git/ignore:2:.DS_Store — იმის მიხედვით, სამი დონიდან რომელია პასუხისმგებელი. თუ ფაილს არაფერი იგნორირებს, ბრძანება საერთოდ არაფერს ბეჭდავს.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.