παπι Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Ας πουμε οτι εχουμε ενα project χ και θελω να δοκιμασω κατι (να αλλαξω πραματα ας πουμε). Οταν τα αλλαξω θα υπαρξουν δυο περιπτωσεις α) να δουλευει β) να μην δουλευει Εαν πεσω στη περιπτωση β, πως θα κανω "rollback" στο αρχικο χ?
Moderators Kercyn Δημοσ. 12 Μαρτίου 2015 Moderators Δημοσ. 12 Μαρτίου 2015 Μπορείς να πας πίσω σε συγκεκριμένο commit: http://stackoverflow.com/questions/4372435/how-can-i-rollback-a-github-repository-to-a-specific-commit
παπι Δημοσ. 12 Μαρτίου 2015 Μέλος Δημοσ. 12 Μαρτίου 2015 Ο τυπος λεει οτι ειναι dangeous, τοχει και σε bold. Αρα δεν νομιζω να μου κανει.
Moderators Kercyn Δημοσ. 12 Μαρτίου 2015 Moderators Δημοσ. 12 Μαρτίου 2015 Ναι γιατί άμα δουλεύεις με άλλους 10 και κάνεις rollback σε ένα δικό σου commit τότε όλα τα commits των άλλων μεταξύ του δικού σου και του τελευταίου commit θα χαθούν. Άμα δουλεύεις μόνος σου δε βλέπω γιατί να είναι επικίνδυνο.
imitheos Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Ας πουμε οτι εχουμε ενα project χ και θελω να δοκιμασω κατι (να αλλαξω πραματα ας πουμε). Οταν τα αλλαξω θα υπαρξουν δυο περιπτωσεις α) να δουλευει β) να μην δουλευει Εαν πεσω στη περιπτωση β, πως θα κανω "rollback" στο αρχικο χ? Το αν δεν δουλεύει θα αργήσει να φανεί ? Δηλαδή δεν μπορείς να κάνεις μεν τα commits τοπικά σε σένα αλλά να μην το κάνεις push στο github μέχρι να τελειώσει το test suite σου ? Αν το github το θέλεις γιατί πρέπει να δει και κάποιος άλλος το αποτέλεσμα μπορείς να δουλέψεις σε ξεχωριστό branch και μετά να κάνεις push εκείνο το branch στο github. Έτσι θα έχεις δύο branch στο github με αυτά να είναι το master σου χωρίς τις επικίνδυνες αλλαγές και το branch σου με τις αλλαγές. Έτσι, αν δεν πετύχει το πείραμα απλά σβήνεις το δεύτερο branch τοπικά και remotely και τελείωσες. Αν πρέπει οπωσδήποτε να κάνεις push στο github και πρέπει να δουλέψεις στο master, τότε θα πρέπει να κάνεις αυτό που σου πρότεινε ο Kercyn δηλαδή force push. Το "dangerous" έγκειται στο γεγονός ότι όταν κάνεις κάποιο push, μπορεί κάποιος contributor να κάνει εκείνη τη στιγμή branch το master και να αρχίσει να δουλεύει σε κάποιο feature. Αν εσύ μετά κάνεις force push (επειδή έσβησες commits με reset ή επειδή έκανες rebase ή ποιος ξέρει πως), τότε όταν πάει ο contributor να κάνει push (ή ακόμη και ένα απλό pull να κάνει), θα δημιουργηθεί πρόβλημα (το οποίο φυσικά λύνεται αλλά είναι δύσκολο για κάποιον που δεν έχει ασχοληθεί με το θέμα). Αν, όπως σου είπε και ο Kercyn, δεν υπάρχει κάποιος άλλος και είσαι ο μόνος που δουλεύεις στο repo, τότε δεν υπάρχει πρόβλημα. Θα χάσεις μεν τα commits αλλά θέλεις να τα χάσεις, δεν έγινε από λάθος. Σημείωση: Να μην ξεχνάμε το reflog. Αν κάνεις reset --hard και "σβήσεις" τα commits, και κάνεις και push στο github, η ιστορία τους δεν χάνεται (τουλάχιστον για 30 μέρες μέχρι να τα σβήσει ο garbage collector) και μπορείς ανά πάσα στιγμή να τα επαναφέρεις. 5
gon1332 Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Αύτό που είπε ο imitheos για τα branches είναι μεγάλο πράγμα. Όποτε θες να δοκιμάσεις κάποιο νέο feature, απλά κάν'το σε ένα νέο branch. Αν δε δουλέψει το διαγράφεις και ούτε γάτα, ούτε ζη- μιά. Μου λύνει τα χέρια κάθε φορά.
παπι Δημοσ. 12 Μαρτίου 2015 Μέλος Δημοσ. 12 Μαρτίου 2015 Μαλιστα. btw, μονος μου δολευω, τα ανεβαζω στο github επειδη... ειναι τζαμπα
bnvdarklord Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Μαλιστα. btw, μονος μου δολευω, τα ανεβαζω στο github επειδη... ειναι τζαμπα Δες και το bitbucket.org . Υποστηρίζει git και σου δίνει και private repos αν είναι μόνο λίγα άτομα(2 ή 3 δεν θυμαμαι), σε περίπτωση που δεν θες να εχεις τα πάντα public. 1
gon1332 Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Δες και το bitbucket.org . Υποστηρίζει git και σου δίνει και private repos αν είναι μόνο λίγα άτομα(2 ή 3 δεν θυμαμαι), σε περίπτωση που δεν θες να εχεις τα πάντα public. 5 άτομα παρακαλώ! 1
imitheos Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Δες και το bitbucket.org . Υποστηρίζει git και σου δίνει και private repos αν είναι μόνο λίγα άτομα(2 ή 3 δεν θυμαμαι), σε περίπτωση που δεν θες να εχεις τα πάντα public. Και εγώ προτιμώ το bitbucket. Δεν μπορώ να το δικαιολογήσω μια και το github υποστηρίζει 100 πράγματα παραπάνω αλλά για κάποιο λόγο προτιμώ το bb. Ανωμαλία Μαλιστα. btw, μονος μου δολευω, τα ανεβαζω στο github επειδη... ειναι τζαμπα Τότε δεν έχεις πρόβλημα γιατί δεν θα βασίσει κανείς τη δουλειά του πάνω στα χαμένα commits. Κάνε το άφοβα. Αν δεν σε ενοχλεί όμως να τρέξεις δυο-τρία "git checkout" παραπάνω, τότε η λύση με το branch είναι η πιο δόκιμη.
defacer Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Branch και άγιος ο θεός. Εγώ έχω φτάσει στο σημείο να κάνω branch όχι για να γράψω κώδικα αλλά για να κάνω interactive rebase (του... κανονικού branch) και να δω με την ησυχία μου αν μου αρέσει το αποτέλεσμα. 1
imitheos Δημοσ. 12 Μαρτίου 2015 Δημοσ. 12 Μαρτίου 2015 Το τελευταίο τέταρτο δεν μου παίζει τίποτα στο GH και παίρνω συνέχεια το παρακάτω. Καλά ρε παπί τι push έκανες ? 3
παπι Δημοσ. 13 Μαρτίου 2015 Μέλος Δημοσ. 13 Μαρτίου 2015 https://github.com/AnonymoPapaki/Finance-Chart
pmav99 Δημοσ. 16 Μαρτίου 2015 Δημοσ. 16 Μαρτίου 2015 Σημείωση: Να μην ξεχνάμε το reflog. Αν κάνεις reset --hard και "σβήσεις" τα commits, και κάνεις και push στο github, η ιστορία τους δεν χάνεται (τουλάχιστον για 30 μέρες μέχρι να τα σβήσει ο garbage collector) και μπορείς ανά πάσα στιγμή να τα επαναφέρεις. Σε κάποιες περιπτώσεις μένουν και για 90 μέρες. --expire=<time> Entries older than this time are pruned. Without the option it is taken from configuration gc.reflogExpire, which in turn defaults to 90 days. --expire=all prunes entries regardless of their age; --expire=never turns off pruning of reachable entries (but see --expire-unreachable). --expire-unreachable=<time> Entries older than this time and not reachable from the current tip of the branch are pruned. Without the option it is taken from configuration gc.reflogExpireUnreachable, which in turn defaults to 30 days. --expire-unreachable=all prunes unreachable entries regardless of their age; --expire-unreachable=never turns off early pruning of unreachable entries (but see --expire). Προσωπικά βάζω στο .gitrc να είναι πάντα 90 μέρες, αλλά αν κάποιος δουλεύει με τεράστια repositories, ίσως αυτό να του δημιουργεί προβλήματα.
imitheos Δημοσ. 16 Μαρτίου 2015 Δημοσ. 16 Μαρτίου 2015 Σε κάποιες περιπτώσεις μένουν και για 90 μέρες. Προσωπικά βάζω στο .gitrc να είναι πάντα 90 μέρες, αλλά αν κάποιος δουλεύει με τεράστια repositories, ίσως αυτό να του δημιουργεί προβλήματα. Εγώ θα θυμόμουν το unreachable τότε. Ακόμη καλύτερα με τις 90 ημέρες.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα