Σφάλμα Git «no such ref was fetched»

Αν προσπαθήσετε να κάνετε git pull από ένα git repository στο οποίο έχει γίνει μετονομασία του branch πχ από master σε main, τότε θα εμφανιστεί στο terminal το ακόλουθο σφάλμα:

Your configuration specifies to merge with the ref ‘refs/heads/master’
from the remote, but no such ref was fetched.

Ουσιαστικά λέει ότι δεν υπάρχει master στο remote repository.

Για να επιλύσετε αυτό το πρόβλημα, θα χρειαστεί να μετονομάσετε το branch από master σε main και στη συνέχεια να ορίσετε το νέο upstream για το «νέο» σας branch, με τις ακόλουθες εντολές:

  1. Σιγουρευτείτε ότι είστε στο master branch:
  2. Μετονομάστε το master branch σε main:
  3. Και αλλάξτε το upstream:

Για να ελέγξετε αν έγινε σωστά η αλλαγή χρησιμοποιήστε την εντολή:

Αυτή η εντολή δείχνει πληροφορίες για τα τοπικά branches και τα αντίστοιχα upstreams. Στην περίπτωσή μας θα δείξει κάτι σαν το εξής:

main 3f15e4c [origin/main] Merge pull request #12 from yourgitusername/some-merged-branch

Αυτό που βλέπουμε είναι ότι το τοπικό main έχει σωστά πλέον ως upstream το remote origin/main.

Τέλος, δοκιμάστε να κάνετε και ένα git pull για να ενημερώσετε το main branch με όλες τις τελευταίες αλλαγές.

Αλλαγή Name Και Email Σε Όλα Τα Git Commits

Υπάρχουν περιπτώσεις που θα χρειαστεί να μετατρέψετε ένα private repository σε public. Αν έχετε κάνει commits με το όνομά σας και το προσωπικό σας email, ίσως να μη θέλετε αυτές οι πληροφορίες να εμφανίζονται στο log του repository που θα γίνει public.

Για να αλλάξετε όλα τα ονόματα και emails θα πρέπει να ακολουθήσετε τα παρακάτω βήματα.

Ορίζουμε τις τιμές για name και email που θέλουμε πλέον να εμφανίζονται δημόσια:

Τώρα τσεκάρουμε ποια είναι τα name και email στο git config με τις εξής εντολές:

Δημιουργήστε ένα αρχείο με το όνομα git-change-author-details.sh και βάλτε στο αρχείο αυτό τον παρακάτω κώδικα. Αλλάξτε τις τιμές για τα OLD_EMAIL, CORRECT_NAME και CORRECT_EMAIL.

Τρέχουμε το αρχείο με την εντολή bash git-change-author-details.sh και θα αλλάξουν τα στοιχεία για τον author του κάθε commit.

Με την εντολή git log βλέπουμε πλέον ότι το όνομα και το email έχει αλλάξει σε όλα τα git commits και τώρα μπορείτε να κάνετε git push στο public repository σας.

 

Σημείωση: Σε περίπτωση που χρησιμοποιείτε Github, καλό θα ήταν να δείτε τις ρυθμίσεις στη σελίδα github.com/settings/emails και να «τικάρετε» τις επιλογές «Keep my email addresses private» και «Block command line pushes that expose my email»

Διαγραφή Git Index Μετά Από Αλλαγές Στο .gitignore

Όταν σε ένα git repository κάνουμε αλλαγές στο .gitignore αρχείο, τότε το git «αγνοεί» τις αλλαγές που αφορούν αρχεία τα οποία έχουμε ήδη κάνει ‘git add’ σε κάποιο παλαιότερο commit. Στην περίπτωση αυτή ακολουθούμε τα παρακάτω βήματα.

Απομακρύνουμε όλα τα αρχεία του τρέχοντος directory από το index του git με:

Και μετά τα προσθέτουμε πάλι με:

Με τον τρόπο αυτό, βγάλαμε όλα τα αρχεία από το index του git και στη συνέχεια, όταν κάναμε το ‘add’ το git πλέον ακολούθησε τις οδηγίες του νέου ‘.gitignore’ και αγνόησε τα αρχεία που προηγουμένως είχαμε προσθέσει στο repository.

Ρύθμιση Git Για Να Αγνοεί Αλλαγές Σε Permissions

Όταν αλλάζετε τα permissions αρχείων με chmod τότε το git θα θεωρήσει ότι έχουν γίνει αλλαγές στα αρχεία αυτά και το git diff θα δείχνει ότι αυτά τα αρχεία (των οποίων τον κώδικα δεν έχετε αλλάξει) έχουν αλλαγές.

Αν θέλετε το git να αγνοεί όποιες αλλαγές γίνονται με chmod (αλλαγή permissions), τότε χρησιμοποιήστε το εξής: