Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 @imitheos delk@Newton:~/Desktop/triac$ git log --reverse origin/master..master commit ddcb0f6ba0187dfb9ab482b31e9a010140017139 Author: Hidden Date: Mon Mar 18 17:09:36 2019 +0200 Improve code - Store edge matrix to off-chip SDRAM - Remove redundant code chunks - Perform several code optimizations - Clean up Triangle class - Declare static all necessary variables delk@Newton:~/Desktop/triac$ git log --reverse master..origin/master commit 04d1ed886f8b00de37bd24ee814e708f4b0c4efe Author: Hidden Date: Tue Nov 20 15:43:04 2018 +0200 Fix .gitignore mistake - Fix .gitignore mistake preventing .petalinux/ folder tracking - Add missing .petalinux/ folder required for PetaLinux flow @pmav99 νομίζω δεν εχω local changes delk@Newton:~/Desktop/triac$ git status On branch master Your branch and 'origin/master' have diverged, and have 1 and 1 different commit each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working directory clean Οπότε αν κατάλαβα σωστά θέλω: git checkout master git rebase origin/master git push -f -u --tags origin master
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) 14 minutes ago, imitheos said: Στο spoiler δείχνει το tip του origin/master να είναι στο commit 04d1ed8 το οποίο να υποθέσω ότι έγινε μέσα από το gui του bitbucket για αυτό και υπάρχει μόνο στο remote; Θα μπορούσε απλά να έχει γίνει και από άλλο υπολογιστή. @Dr.Fuzzy όχι δεν έχεις. Άρα τα stash δεν χρειάζονται. Δοκίμασε να κάνεις το rebase. Αν δεν μπορεί να το κάνει, θα σου βγάλει μήνυμα και με git rebase --abort το ακυρώνεις και επανέρχεσαι στην κατάσταση που έχεις τώρα. 6 minutes ago, Dr.Fuzzy said: Οπότε αν κατάλαβα σωστά θέλω: git checkout master git rebase origin/master git push -f -u --tags origin master Τα tags είναι επί της ουσίας aliases για commit hashes. «Δείχνουν» σε ένα συγκεκριμένο commit. Το tag v1.6.0 δείχνει στο ddcb0f6. Μετά το rebase θα εξακολουθήσει να δείχνει στο ddcb0f6. Ενώ εσύ θες να το κάνεις να δείχνει στο νέο commit που θα δημιουργηθεί μετά το rebase. Άρα τα συγκεκριμένο tag θα χρειαστεί να τα ξαναφτιάξεις (με --force) Επεξ/σία 19 Μαρτίου 2019 από pmav99
Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 1 minute ago, pmav99 said: Θα μπορούσε απλά να έχει γίνει και από άλλο υπολογιστή. Οχι δεν έχει γίνει τίποτα commit μέσα από το gui του bitbucket, από άλλο υπολογιστή λογικά, καθώς δουλεύω σε 2-3. Αναφορικά με το 1.5.1 συμφωνώ είναι υπερβολή, ίσως να έπρεπε να ενσωματωθεί στην 1.6.0 και να τελειώνει η υπόθεση, αλλά φοβάμαι μη κάνω καμία πατάτα. Παρεπιπτόντως αυτό το link έχω ακολουθήσει για τα commit messages!
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) Άντε κάνε το rebase! Πονάει λιγότερο από όσο νομίζεις! BTW, αν το repo ΔΕΝ είναι public και ΔΕΝ το χρησιμοποιούν και άλλοι εκτός από εσένα, τότε μπορείς άφοβα να αλλάξεις το history Επεξ/σία 19 Μαρτίου 2019 από pmav99
Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 6 minutes ago, pmav99 said: Άντε κάνε το rebase! Πονάει λιγότερο από όσο νομίζεις! BTW, αν το repo ΔΕΝ είναι public και ΔΕΝ το χρησιμοποιούν και άλλοι εκτός από εσένα, τότε μπορείς άφοβα να αλλάξεις το history Οχι δεν είναι public ακόμα (αλλά θα το κάνω σύντομα) οπότε δεν έχω πρόβλημα να κάνω hack το history (σε λογικά πλαίσια!). ΟΚ κάνω rebase και ενημερώνω σε λίγο. @pmav99 Spoiler delk@Newton:~/Desktop/triac$ git checkout master Already on 'master' Your branch and 'origin/master' have diverged, and have 1 and 1 different commit each, respectively. (use "git pull" to merge the remote branch into yours) delk@Newton:~/Desktop/triac$ git rebase origin/master First, rewinding head to replay your work on top of it... Applying: Improve code Using index info to reconstruct a base tree... M .gitignore .git/rebase-apply/patch:69909: space before tab in indent. dmatest_0: dmatest@0 { // for xilinx axi dma Kernel driver test (axidmatest.ko) .git/rebase-apply/patch:69910: space before tab in indent. compatible ="xlnx,axi-dma-test-1.00.a"; .git/rebase-apply/patch:69911: space before tab in indent. dmas = <&axi_dma_0 0 .git/rebase-apply/patch:69912: space before tab in indent. &axi_dma_0 1>; .git/rebase-apply/patch:69913: space before tab in indent. dma-names = "axidma0", "axidma1"; warning: squelched 15 whitespace errors warning: 20 lines add whitespace errors. Falling back to patching base and 3-way merge... Κάνω push;
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 Αφου έχεις conflicts υπάρχουν δύο δρόμοι: 1. Αν δεν σε νοιάζει να παραμείνει το 1.5.1 στο origin τότε κάνεις git rebase --abort (για να βγεις από το rebase mode) git checkout master (για να πας στο local master) git push --force --all (για να κάνεις overwrite το origin/master με το local master. git push --tags (για να στείλεις το 1.6.0 στο origin) Αυτό σημαίνει ότι θα χάσεις το 1.5.1 από το origin και ότι τις αλλαγές του αν δεν τις έχεις θα πρέπει να τις υλοποιήσεις πάνω στο 1.6.0 2. Aν σε νοιάζει να παραμείνει το 1.5.1 στο origin τότε θα πρέπει να επιλύσεις τα conflicts. Δίνεις λοιπόν git mergetool και αν είσαι τυχερός το conflict θα επιλυθεί μόνο του. Αν είναι πιο περίπλοκα θα πρέπει να το κάνεις resolve manually (3 way merge). Μη σε φοβίζει είναι πιο απλό από όσο δείχνει. Δες κανένα βίντεο στο youtube για το πως ακριβώς γίνεται γιατί εξαρτάται από το diff tool που χρησιμοποιείς (kdiff3, vimdiff κτλ)
Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 5 minutes ago, pmav99 said: Αφου έχεις conflicts υπάρχουν δύο δρόμοι: 1. Αν δεν σε νοιάζει να παραμείνει το 1.5.1 στο origin τότε κάνεις git rebase --abort (για να βγεις από το rebase mode) git checkout master (για να πας στο local master) git push --force --all (για να κάνεις overwrite το origin/master με το local master. git push --tags (για να στείλεις το 1.6.0 στο origin) Αυτό σημαίνει ότι θα χάσεις το 1.5.1 από το origin και ότι τις αλλαγές του αν δεν τις έχεις θα πρέπει να τις υλοποιήσεις πάνω στο 1.6.0 2. Aν σε νοιάζει να παραμείνει το 1.5.1 στο origin τότε θα πρέπει να επιλύσεις τα conflicts. Δίνεις λοιπόν git mergetool και αν είσαι τυχερός το conflict θα επιλυθεί μόνο του. Αν είναι πιο περίπλοκα θα πρέπει να το κάνεις resolve manually (3 way merge). Μη σε φοβίζει είναι πιο απλό από όσο δείχνει. Δες κανένα βίντεο στο youtube για το πως ακριβώς γίνεται γιατί εξαρτάται από το diff tool που χρησιμοποιείς (kdiff3, vimdiff κτλ) OK, χαζή ερώτηση, αν σβήσω το local και κάνω git clone απο την αρχή απο το remote δεν θα έχω 1.5.0->1.5.1->1.6.0;
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) όχι. Το origin δεν ξέρει αυτή τη στιγμή τίποτα για το 1.6.0. Οπότε το νέο clone σου δεν θα έχει το 1.6.0. edit εσύ τώρα έχεις: common parent | v --- 1.5.0 ----- 1.5.1 (origin/master) | |--------- 1.6.0 (master) Αν κάνεις rebase και λύσεις τα conflicts που σου βγάζει θα πας εδώ: common parent | v --- 1.5.0 ----- 1.5.1 ----- 1.6.0 (master, origin/master) Αν ρίξεις git push --force θα έχεις αυτό: common parent | v --- 1.5.0 ----- 1.6.0 (master, origin/master) Επεξ/σία 19 Μαρτίου 2019 από pmav99
Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) 1 hour ago, pmav99 said: όχι. Το origin δεν ξέρει αυτή τη στιγμή τίποτα για το 1.6.0. Οπότε το νέο clone σου δεν θα έχει το 1.6.0. OK what if I git clone the project, οπότε τότε θα έχω 1.5.0->1.5.1 και θα έχω χάσει την 1.6.0. Σωστά; Οπότε μετά μπορώ στο freshly cloned repo να κάνω overwrite τα αρχεία του με τα αρχεία του local repo (εκτός απο το .git φυσικά) και στη συνέχεια να κάνω git add, commit και push 1.6.0. Είναι history hack το ξέρω και θα είναι φυσικά σαν να υλοποιώ τις αλλαγές της 1.6.0 σήμερα αλλά δε με ενδιαφέρει καθόλου καθότι προς το παρόν είναι private repo και δεν το έχει κάποιος άλλος. Αν το παρατραβήξω κιόλας αφού στο cloned η 1.5.1 θα είναι η HEAD θα μπορούσα να την κάνω uncommit την 1.5.1 (git reset --soft HEAD~) να κανω overwrite με τα αρχεία του local και στη συνέχεια να κάνω git add, commit και push 1.6.0 οπότε ξεφορτώνομαι την 1.5.1 και την ενσωματώνω στην 1.6.0. BTW γιατι έχω και HEAD - > master και 1.6.0 διαφορετικά commits; delk@Newton:~/Desktop/triac$ git log --all --decorate commit 5164f3d09b6b1cc6a5bdea2e47e04d5236d2266a (HEAD -> master) Author: Hidden Date: Mon Mar 18 17:09:36 2019 +0200 Improve code - Store edge matrix to off-chip SDRAM - Remove redundant code chunks - Perform several code optimizations - Clean up Triangle class - Declare static all necessary variables commit ddcb0f6ba0187dfb9ab482b31e9a010140017139 (tag: v1.6.0) Author: Hidden Date: Mon Mar 18 17:09:36 2019 +0200 Improve code - Store edge matrix to off-chip SDRAM - Remove redundant code chunks - Perform several code optimizations - Clean up Triangle class - Declare static all necessary variables Επεξ/σία 19 Μαρτίου 2019 από Dr.Fuzzy
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) 9 minutes ago, Dr.Fuzzy said: BTW γιατι έχω και HEAD - > master και 1.6.0 διαφορετικά commits; Προφανώς έχεις κάνεις rebase. Το tag v1.6.0 εξακολουθεί να δείχνει στο παλιο commit (δηλαδή στο ddcb0f6b) ενώ μετά το rebase δημιουργήθηκε ένα καινούριο commit. ΒΤW αν είναι εύκολο να βάζεις το output των εντολών που σου έδωσα στην προηγούμενη σελίδα, γιατί: Σε αυτό που συζητάμε δεν μας ενδιαφέρουν τα πλήρη commit messages Δεν φαίνεται πιο είναι το parent του καθενός commit από εκέι και πέρα αυτό που λες είναι σωστό και είναι ΟΚ αν θες να τελειώνεις. Παρόλα αυτά είναι μια καλή ευκαιρία να αποκτήσεις λίγη hands-on experience με git Επεξ/σία 19 Μαρτίου 2019 από pmav99
Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 12 minutes ago, pmav99 said: Προφανώς έχεις κάνεις rebase. Το tag v1.6.0 εξακολουθεί να δείχνει στο παλιο commit (δηλαδή στο ddcb0f6b) ενώ μετά το rebase δημιουργήθηκε ένα καινούριο commit. ΒΤW αν είναι εύκολο να βάζεις το output των εντολών που σου έδωσα στην προηγούμενη σελίδα, γιατί: Σε αυτό που συζητάμε δεν μας ενδιαφέρουν τα πλήρη commit messages Δεν φαίνεται πιο είναι το parent του καθενός commit από εκέι και πέρα αυτό που λες είναι σωστό και είναι ΟΚ αν θες να τελειώνεις. Παρόλα αυτά είναι μια καλή ευκαιρία να αποκτήσεις λίγη hands-on experience με git OK, βάσει και του rebase που έχει γίνει, αν δεν κάνω τον (hack) τρόπο που λέω, μπορείς να μου πάλι τον legit τρόπο γιατί έχω χαθεί με όλα τα post και ποιο τελικά θα είναι μετά το commit log μου;
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 Δώσε μια git lg1 και κάνε paste από το 1.4.0 και μετά
Dr.Fuzzy Δημοσ. 19 Μαρτίου 2019 Μέλος Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) 18 minutes ago, pmav99 said: Δώσε μια git lg1 και κάνε paste από το 1.4.0 και μετά για δες: Spoiler * 5164f3d - (24 hours ago) Improve code - Hidden (HEAD -> master) * 04d1ed8 - (4 months ago) Fix .gitignore mistake - Hidden (tag: v1.5.1, origin/master) | * ddcb0f6 - (24 hours ago) Improve code - Hidden (tag: v1.6.0) |/ * 95a4ed9 - (5 months ago) Add Vivado, Xilinx SDK and PetaLinux projects - Hidden (tag: v1.5.0) * 29d183c - (5 months ago) Choose target FPGA board when build script is run - Hidden (tag: v1.4.2) * 633b50a - (5 months ago) Make code implementation changes - Hidden (tag: v1.4.1) * c9cbf42 - (5 months ago) Change output triangulation matrix format - Hidden (tag: v1.4.0) επίσης στον hack τροπο που ανέφερα κάνω push στο existing remote repo ή προτιμότερα delete to remote repo, create από την αρχή και μετά push; Επεξ/σία 19 Μαρτίου 2019 από Dr.Fuzzy
pmav99 Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 (επεξεργασμένο) Τέλεια, το rebase έγινε σωστά άρα έχεις τελειώσει. Δίνεις: git checkout master (για να πας locally στο 5164f3d) git tag -d v1.6.0 (για να διαγράψεις το 1.6.0. Προσοχή αυτό διαγράφει το tag όχι το commit. Διαγράφει δηλαδή το alias. Το commit παραμένει στο reflog) git tag ... (για να ξαναδημιουργήσεις το 1.6.0) git push git push --tags Μετά από αυτό στο git lg1 δεν θα βλέπεις πια το ddcb0f6 αλλά κάτι τέτοιο: * 5164f3d - (24 hours ago) Improve code - Hidden (tag: v1.6.0, HEAD -> master, origin/master) * 04d1ed8 - (4 months ago) Fix .gitignore mistake - Hidden (tag: v1.5.1) * 95a4ed9 - (5 months ago) Add Vivado, Xilinx SDK and PetaLinux projects - Hidden (tag: v1.5.0) * 29d183c - (5 months ago) Choose target FPGA board when build script is run - Hidden (tag: v1.4.2) * 633b50a - (5 months ago) Make code implementation changes - Hidden (tag: v1.4.1) * c9cbf42 - (5 months ago) Change output triangulation matrix format - Hidden (tag: v1.4.0) Επεξ/σία 19 Μαρτίου 2019 από pmav99 1
imitheos Δημοσ. 19 Μαρτίου 2019 Δημοσ. 19 Μαρτίου 2019 53 λεπτά πριν, Dr.Fuzzy είπε OK what if I git clone the project, οπότε τότε θα έχω 1.5.0->1.5.1 και θα έχω χάσει την 1.6.0. Σωστά; Οπότε μετά μπορώ στο freshly cloned repo να κάνω overwrite τα αρχεία του με τα αρχεία του local repo (εκτός απο το .git φυσικά) και στη συνέχεια να κάνω git add, commit και push 1.6.0. Είναι history hack το ξέρω Τώρα που λύθηκε το πρόβλημα, να σχολιάσω ότι το παραπάνω είναι semi-official τακτική documented και στο παρακάτω xkcd 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα