Περισσότερα
.gitignore και "Τα ακόλουθα μη παρακολουθούμενα αρχεία του δέντρου εργασίας θα αντικατασταθούν από το checkout",
Έτσι πρόσθεσα έναν φάκελο στο αρχείο .gitignore.
Μόλις κάνω ένα git status
μου λέει
# On branch latest
nothing to commit (working directory clean)
Ωστόσο, όταν προσπαθώ να αλλάξω κλάδους λαμβάνω το εξής:
My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
public/system/images/9/thumb/red-stripe.jpg
public/system/images/9/original/red-stripe.jpg
public/system/images/8/thumb/red-stripe-red.jpg
public/system/images/8/original/red-stripe-red.jpg
public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
public/system/images/7/thumb/red-stripe-dark.jpg
public/system/images/7/original/red-stripe-dark.jpg
public/system/images/7/original/DSC07833.JPG
public/system/images/6/thumb/red-stripe-bw.jpg
public/system/images/6/original/website-logo.png
public/system/images/6/original/red-stripe-bw.jpg
public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
public/system/images/5/original/logocompv-colored-squares-100px.png
public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/4/thumb/DSC_0001.JPG
public/system/images/4/original/logo.png
public/system/images/4/original/DSC_0001.JPG
public/system/images/4/original/2-up.jpg
public/system/images/3/thumb/logo2.gif
public/system/images/3/original/logo2.gif
public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/3/original/11002000962.jpg
public/system/images/2/thumb/Profile Pic.jpg
public/system/images/2/original/Profile Pic.jpg
public/system/images/2/original/02 Login Screen.jpg
public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting
Έτσι μοιάζει το αρχείο .gitignore μου:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Πώς μπορώ να το κάνω αυτό να δουλέψει ώστε να μπορώ να αλλάξω κλάδους χωρίς να διαγράψω αυτά τα αρχεία;
Αν κάνω μια αλλαγή, θα επηρεάσει αυτά τα αρχεία; Με άλλα λόγια, αν επιστρέψω σε αυτό το κλαδί μετά θα είναι όλα τέλεια όπως μέχρι την τελευταία μου δέσμευση;
Δεν θέλω να χάσω αυτά τα αρχεία, απλά δεν θέλω να παρακολουθούνται.
788
3
ΠΡΟΣΟΧΗ: θα διαγράψει αρχεία που δεν έχουν εντοπιστεί, οπότε δεν είναι μια καλή απάντηση στο ερώτημα που τίθεται.
Χτύπησα και αυτό το μήνυμα. Στην περίπτωσή μου, δεν ήθελα να κρατήσω τα αρχεία, οπότε αυτό λειτούργησε για μένα:
git 2.11 και νεότερα
older git
Αν θέλετε επίσης να αφαιρέσετε αρχεία που αγνοούνται από το git, τότε εκτελέστε την ακόλουθη εντολή.
ΠΡΟΣΟΧΉ!!! ΑΥΤΌ ΠΙΘΑΝΌΤΑΤΑ ΚΑΤΑΣΤΡΈΦΕΙ ΤΟ ΈΡΓΟ ΣΑΣ, ΧΡΗΣΙΜΟΠΟΙΉΣΤΕ ΤΟ ΜΌΝΟ ΑΝ ΞΈΡΕΤΕ 100% ΤΙ ΚΆΝΕΤΕ
git 2.11 και νεότερες εκδόσεις
older git
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
σημαίνει ότι αφαιρούνται επίσης τα αγνοημένα αρχεία καθώς και τα αρχεία που είναι άγνωστα στο git.-d
σημαίνει ότι αφαιρούνται και οι μη παρακολουθούμενοι κατάλογοι εκτός από τα μη παρακολουθούμενα αρχεία.Το
-f
απαιτείται για να αναγκαστεί να εκτελεστεί.Φαίνεται ότι θέλετε να αγνοηθούν τα αρχεία, αλλά έχουν ήδη μεταφερθεί. Το .gitignore δεν έχει καμία επίδραση σε αρχεία που βρίσκονται ήδη στο repo, οπότε πρέπει να αφαιρεθούν με το
git rm --cached
. Το---cached
θα αποτρέψει το να έχει οποιαδήποτε επίδραση στο αντίγραφο εργασίας σας και απλά θα σημειωθεί ως αφαιρεμένο την επόμενη φορά που θα κάνετε commit. Αφού τα αρχεία αφαιρεθούν από το repo, τότε το .gitignore θα αποτρέψει την εκ νέου προσθήκη τους.Αλλά έχετε ένα άλλο πρόβλημα με το .gitignore σας, χρησιμοποιείτε υπερβολικά μπαλαντέρ και αυτό το κάνει να ταιριάζει με λιγότερα από όσα περιμένετε. Αντ' αυτού ας αλλάξουμε το .gitignore και ας δοκιμάσουμε αυτό.
Το Git σας λέει ότι θέλει να δημιουργήσει αρχεία (με το όνομα
public/system/images/9/...
κλπ), αλλά έχετε ήδη υπάρχοντα αρχεία σε αυτόν τον κατάλογο που δεν παρακολουθούνται από το Git. Ίσως κάποιος άλλος να πρόσθεσε αυτά τα αρχεία στο αποθετήριο του Git, και αυτή είναι η πρώτη φορά που έχετε μεταβεί σε αυτό το κλαδί;Πιθανόν να υπάρχει κάποιος λόγος για τον οποίο αυτά τα αρχεία βρίσκονται στον κλάδο "develop" αλλά όχι στον τρέχοντα κλάδο σας. Ίσως πρέπει να ρωτήσετε τους συνεργάτες σας γιατί συμβαίνει αυτό.
Πώς μπορώ να το κάνω αυτό να δουλέψει ώστε να μπορώ να αλλάξω κλάδο χωρίς να διαγράψω αυτά τα αρχεία;
Δεν μπορείτε να το κάνετε χωρίς να κάνετε τα αρχεία να εξαφανιστούν με κάποιο τρόπο. Θα μπορούσατε να μετονομάσετε το
public
σεmy_public
ή κάτι τέτοιο προς το παρόν.Αν επέστρεφα σε αυτόν τον κλάδο μετά, όλα θα ήταν τέλεια μέχρι την τελευταία μου δέσμευση;
Αν κάνετε commit τις αλλαγές σας, το Git δεν θα τις χάσει. Αν δεν κάνετε commit τις αλλαγές σας, τότε το Git θα προσπαθήσει πολύ σκληρά να μην αντικαταστήσει τη δουλειά που έχετε κάνει. Αυτό'είναι που σας προειδοποιεί το Git στην πρώτη περίπτωση εδώ (όταν προσπαθήσατε να αλλάξετε κλάδους).