Επιδιόρθωση: Το Gitignore δεν λειτουργεί

Το GitHub έχει αναδειχθεί πρωτοπόρος στον τομέα της συνεργασίας κώδικα και της κοινής χρήσης των αποθετηρίων. Το GitHub είναι κατά κύριο λόγο ένα λογισμικό ελέγχου εκδόσεων που επιτρέπει στους χρήστες τον έλεγχο του κατανεμημένου ελέγχου έκδοσης και του SCM (διαχείριση πηγαίου κώδικα). Αυτή η πλατφόρμα χρησιμοποιείται από μεγάλες επιχειρήσεις και εταιρείες σε όλο τον κόσμο.

Πλατφόρμες όπως αυτές έχουν τις τεχνικές και τα ζητήματά τους. Ένα συγκεκριμένο πρόβλημα που αντιμετώπισαν οι κωδικοποιητές ήταν ότι το .gitignore δεν λειτουργούσε στο GitHub. Η πλατφόρμα είτε αγνόησε το .gitignore είτε λειτούργησε μερικώς. Είναι ενδιαφέρον να σημειωθεί ότι το πρόβλημα μπορεί να είναι λίγο διαφορετικό σε κάθε περίπτωση, καθώς κάθε περίπτωση είναι ένα εντελώς διαφορετικό σενάριο. Ωστόσο, οι λύσεις που παραθέτουμε θα περιέχουν διορθώσεις που θα λειτουργούν καθολικά.

Τι είναι το .gitignore;

Το Git (ή το GitHub) βλέπει κάθε αρχείο στον κατάλογο εργασίας σας. Χαρακτηρίζει κάθε αρχείο ως ένα από τα τρία:

  • Παρακολούθηση: Αυτά τα αρχεία έχουν δεσμευτεί ή έχουν σταματήσει στο παρελθόν στο ιστορικό.
  • Untracked: Αυτά είναι τα αρχεία που δεν έχουν πραγματοποιηθεί στο παρελθόν ούτε έχουν δεσμευτεί.
  • Αγνοήθηκε: Αυτά είναι τα αρχεία που ο ίδιος ο χρήστης είπε στον Git να αγνοήσει εντελώς.

Αυτά τα αγνοούμενα αρχεία ενδέχεται να διαφέρουν από σενάριο σε σενάριο και είναι ως επί το πλείστον αρχεία που δημιουργούνται από μηχανήματα ή δημιουργούν αντικείμενα. Αυτή είναι η κοινή πρακτική. μπορεί να αγνοείτε διάφορα άλλα αρχεία ανάλογα με τις δικές σας ανάγκες. Μερικά παραδείγματα αυτών των αρχείων είναι:

  • Μεταγλωττισμένος κώδικας: Αυτά τα αρχεία είναι συνήθως με την επέκταση .class, .pyc, .ccp κ.λπ.
  • Κρυφά αρχεία συστήματος: Πρόκειται για αρχεία που χρησιμοποιούνται από το σύστημα για τις λειτουργίες του, αλλά είναι κρυμμένα από απλή προβολή, για παράδειγμα, DS_Store ή Thumbs.db κ.λπ.
  • Κατασκευή καταλόγων εξόδου: Πρόκειται κυρίως για τους καταλόγους / bin, / out κ.λπ.
  • Προσωρινές μνήμες εξάρτησης: Αυτά τα αρχεία μπορεί να είναι τα περιεχόμενα των / κόμβων ή / των ενοτήτων πακέτων.
  • Αρχεία διαμόρφωσης IDE: Πρόκειται για αρχεία διαμόρφωσης τα οποία δημιουργούνται ή διαχειρίζονται κυρίως από το λογισμικό IDE.
  • Αρχεία που δημιουργούνται κατά το χρόνο εκτέλεσης: Υπάρχουν ορισμένα προγράμματα που δημιουργούν αρχεία κατά το χρόνο εκτέλεσης. Εάν εκτελείται οποιοσδήποτε τέτοιος κώδικας, ενδέχεται να δημιουργηθούν ορισμένα αρχεία κατά το χρόνο εκτέλεσης στο φάκελο εργασίας σας και ενδέχεται να τα αγνοήσετε στο Git.

Όποιο αρχείο θέλετε να αγνοήσετε παρακολουθείται σε ένα ειδικό αρχείο που ονομάζεται .gitignore, το οποίο ελέγχεται κυρίως στη ρίζα του χώρου εργασίας σας. Σύμφωνα με την επίσημη τεκμηρίωση του GitHub σχετικά με το θέμα, δεν υπάρχει συγκεκριμένη εντολή gitignore. Αντ 'αυτού, πρέπει να επεξεργαστείτε με μη αυτόματο τρόπο το αρχείο που θέλετε να αγνοήσετε. Το αρχείο .gitignore περιέχει μοτίβα που ταιριάζουν με τα ονόματα αρχείων στο αποθετήριο εργασίας σας και αυτά χρησιμοποιούνται για να προσδιορίσετε εάν ένα συγκεκριμένο αρχείο πρέπει να αγνοηθεί ή όχι.

Τι προκαλεί το .gitignore να μην λειτουργεί;

Η δυνατότητα .gitignore μπορεί να λειτουργεί τέλεια, αλλά ίσως να μην την έχετε ρυθμίσει σωστά. Σε όλες τις έρευνές μας, καταλήξαμε στο συμπέρασμα ότι η ενότητα λειτουργούσε πράγματι. Ο λόγος για τον οποίο οι κωδικοποιητές δεν μπορούν να χρησιμοποιήσουν τη δυνατότητα είναι κυρίως επειδή δεν έχουν ρυθμίσει σωστά το αρχείο ή υπάρχουν ορισμένες συνθήκες που δεν πληρούνται στον υποκείμενο κώδικα.

Ακολουθούν μερικές λύσεις που μπορεί να λειτουργήσουν για εσάς. Κάθε λύση μπορεί να μην ισχύει στην περίπτωσή σας, οπότε βεβαιωθείτε ότι μεταβείτε στην επόμενη, εάν δεν πληρούνται οι αρχικές προϋποθέσεις.

Λύση 1: Έλεγχος αρχείου .gitignore

Προέκυψε μια ενδιαφέρουσα περίπτωση όπου είδαμε ότι το αρχείο .gitignore δημιουργήθηκε σε λάθος μορφή. Αυτό το συγκεκριμένο ζήτημα προέκυψε όταν οι χρήστες δημιούργησαν το αρχείο χρησιμοποιώντας την προεπιλεγμένη εφαρμογή του Notepad στο λειτουργικό σύστημα Windows. Αποδεικνύεται ότι το Σημειωματάριο γράφει το αρχείο σε Unicode αντί για μορφή ANSI. Σε αυτήν τη λύση, θα αποθηκεύσουμε τις αλλαγές του Σημειωματάριου στη σωστή μορφή του .gitignore και θα δούμε αν αυτό διορθώνει το πρόβλημα.

Σημείωση: Πρέπει να καταργήσετε την επέκταση του .txt από το αρχείο όταν δημιουργείτε ένα νέο αρχείο χρησιμοποιώντας το Σημειωματάριο.

  1. Αφού γράψετε τον κώδικα ή αλλάξετε ένα νέο έγγραφο κειμένου στο Σημειωματάριο, κάντε κλικ στο Αρχείο και επιλέξτε Αποθήκευση ως .
  1. Τώρα μπροστά από την κωδικοποίηση , επιλέξτε ANSI . Τώρα αφαιρέστε την επέκταση αρχείου του .txt και αποθηκεύστε το αρχείο με το όνομα " .gitignore ". Επιλέξτε τον σωστό κατάλογο και αποθηκεύστε.
  1. Τώρα μεταβείτε στον κατάλογο και ελέγξτε αν έχει δημιουργηθεί το σωστό αρχείο. Τώρα δοκιμάστε το ξανά με το Git και δείτε αν η λειτουργία Παράβλεψη λειτουργεί όπως αναμένεται.

Οι προγραμματιστές πρέπει να απέχουν από τη χρήση του προεπιλεγμένου σημειωματάριου στα Windows. Αντ 'αυτού, πρέπει να χρησιμοποιήσετε το κατάλληλο σημειωματάριο «προγραμματιστών». Μερικά παραδείγματα περιλαμβάνουν το Σημειωματάριο ++ κ.λπ. Σε αυτά, δεν θα έχετε προβλήματα όπως αυτά.

Σημείωση: Εάν το αρχείο σας είναι ήδη αποθηκευμένο σε μορφή UNICODE, θα πρέπει να αποθηκεύσετε τα περιεχόμενα σε μορφή ANSI σωστά εάν θέλετε το αρχείο σας να εντοπιστεί σωστά από το Git.

Λύση 2: Έλεγχος του αρχείου που προσπαθείτε να αγνοήσετε

Μια άλλη προϋπόθεση στην οποία λειτουργεί το .gitignore είναι ότι το αρχείο σας δεν πρέπει να είναι ακόμη μέρος του αποθετηρίου . Αυτή είναι μια πολύ ουσιώδης πτυχή σαν να ισχύει, το αρχείο δεν θα αγνοηθεί καθώς έχει ήδη προστεθεί στο αποθετήριο. Το Git δεν μπορεί να το αγνοήσει ακόμη και αν τοποθετήσετε το όνομα ή τον κανόνα του στο αρχείο .gitignore. Στην ουσία, το Git αγνοεί μόνο τα αρχεία που δεν έχουν παρακολουθηθεί .

Πρέπει να κοιτάξετε τη δομή σας (αποθετήριο) και να βεβαιωθείτε ότι το αρχείο που προσπαθείτε να αγνοήσετε δεν έχει προστεθεί στο αποθετήριο. Εάν είναι, θα πρέπει να αφαιρέσετε το αρχείο από το αποθετήριο και μετά την ολοκλήρωση των τελευταίων αλλαγών, προσθέστε το όνομά του στο .gitignore (μπορείτε επίσης να αντιγράψετε τα περιεχόμενα του αρχείου και αφού το διαγράψετε, αντιγράψτε το με διαφορετικό όνομα) .

Λύση 3: Εκ νέου προσθήκη αρχείων στο αποθετήριο

Εάν έχετε ήδη προσθέσει κανόνες στο .gitignore, αλλά τα αρχεία που θέλετε να αγνοήσετε έχουν ήδη προστεθεί, μπορούμε να προσθέσουμε ξανά τα αρχεία. Η προσθήκη σημαίνει ότι θα αφαιρέσουμε τα πάντα από το ευρετήριο του Git και στη συνέχεια θα τα προσθέσουμε ξανά στο αποθετήριο σας. Όταν προσθέτουμε ξανά αρχεία από το μηδέν, θα λάβετε υπόψη τους κανόνες που έχετε προσθέσει στο .gitignore και προστίθενται μόνο τα σωστά αρχεία.

Σημείωση: Θα πρέπει επίσης να δημιουργήσετε αντίγραφα ασφαλείας του κωδικού σας κάπου αλλού πριν εκτελέσετε αυτήν τη λύση. Είναι πάντα καλό να έχουμε ένα αντίγραφο ασφαλείας για κάθε περίπτωση.

  1. Εκτελέστε την ακόλουθη εντολή. Αυτό θα σταματήσει και θα καταργήσει τις διαδρομές στα αρχεία σας από το ευρετήριο git με αναδρομικό τρόπο.
git rm -r - αποθηκευμένο.
  1. Αφού εκτελεστεί, θα πρέπει να εκτελέσετε την ακόλουθη εντολή. Αυτό θα προσθέσει όλα τα αρχεία σας πίσω και αφού το .gitignore θα έχει τους κανόνες, θα ενημερωθούν μόνο τα σωστά αρχεία.
git add.
  1. Τώρα θα δεσμεύσουμε όλα τα αρχεία σας στο ευρετήριο χρησιμοποιώντας τον παρακάτω κώδικα:
git commit -m ".gitigore λειτουργεί τώρα"

Τώρα ελέγξτε τα αρχεία σας και δείτε εάν το πρόβλημα έχει επιλυθεί και μπορείτε να χρησιμοποιήσετε ξανά το .gitignore χωρίς προβλήματα.