Dr.Fuzzy 1.525 Δημοσ. 6 Απριλίου Share Δημοσ. 6 Απριλίου (επεξεργασμένο) Μικρή βοήθεια πριν κάνω μεγάλη πατάτα! Στο local repo έκανα κάποιες αλλαγές που ήθελα να τις κάνω push σε ξεχωριστό branch (develop) από το master. git checkout origin/develop git add . git commit -m "Modify code to use N-ary tree" git push origin origin/develop και όπως το βλέπω τώρα μάλλον στο push έκανα τη μλκ. Tα branches που έχω locally/remotely: Spoiler * (HEAD detached from origin/develop) master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master και το log μου: Spoiler commit 51348744c5222663aeb415c83c51706b5d4c78a6 (HEAD) Author: DrFuzzy Date: Tue Apr 6 17:53:32 2021 +0300 Modify code to use N-ary tree commit b56f40480ff7135dc58ebcfe6378b80ffd4baa6d (tag: v1.6.1, origin/master, origin/develop, origin/HEAD) Author: DrFuzzy Date: Sun Dec 15 16:15:46 2019 +0000 Replace absolute symlinks with original files commit 5164f3d09b6b1cc6a5bdea2e47e04d5236d2266a (tag: v1.6.0, master) Author: DrFuzzy Date: Mon Mar 18 17:09:36 2019 +0200 Store edge matrix to off-chip SDRAM To commit που ήθελα να πάει στην develop είναι το commit 51348744c5222663aeb415c83c51706b5d4c78a6 (HEAD) και είναι locally μόνο βάσει του log. Φαντάζομαι ότι πρέπει να κάνω git push origin/develop HEAD για να συγχρονιστεί το local με το remote αλλά δεν είμαι σίγουρος. Επεξ/σία 6 Απριλίου από Dr.Fuzzy Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 pmav99 1.541 Δημοσ. 6 Απριλίου Share Δημοσ. 6 Απριλίου Για να βγάλουμε άκρη, άνοιξε το `~/.gitconfig` και προσέθεσε μέσα τα εξής: [alias] lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all σώσε το και μετά τρέξε την εντολή `git lg1` η οποία θα σου δείξει τα logs με αρκετά πιο ευανάγνωστο format (1 line per commit) και θα σου δείξει που είναι τι. Το `git lg2` είναι το ίδιο απλά χρησιμοποιεί 2 γραμμές ανά commit. Αν δεν βγάζεις άκρη, βγάλε ένα screenshot και ανέβασε το. 1 Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 Dr.Fuzzy 1.525 Δημοσ. 6 Απριλίου Μέλος Share Δημοσ. 6 Απριλίου 32 minutes ago, pmav99 said: Για να βγάλουμε άκρη, άνοιξε το `~/.gitconfig` και προσέθεσε μέσα τα εξής: [alias] lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all σώσε το και μετά τρέξε την εντολή `git lg1` η οποία θα σου δείξει τα logs με αρκετά πιο ευανάγνωστο format (1 line per commit) και θα σου δείξει που είναι τι. Το `git lg2` είναι το ίδιο απλά χρησιμοποιεί 2 γραμμές ανά commit. Αν δεν βγάζεις άκρη, βγάλε ένα screenshot και ανέβασε το. Πάρε τα τελευταία 4 (είναι πολλά): Spoiler $ git lg1 * 5134874 - (2 hours ago) Modify code to use N-ary tree - DrFuzzy (HEAD) * b56f404 - (1 year, 4 months ago) Replace absolute symlinks with original files - DrFuzzy (tag: v1.6.1, origin/master, origin/develop, origin/HEAD) * 5164f3d - (2 years, 1 month ago) Improve code - DrFuzzy (tag: v1.6.0, master) * 04d1ed8 - (2 years, 5 months ago) Fix .gitignore mistake - DrFuzzy (tag: v1.5.1) Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 pmav99 1.541 Δημοσ. 6 Απριλίου Share Δημοσ. 6 Απριλίου (επεξεργασμένο) Λογικά θέλει 1. να δημιουργήσεις το branch develop στο τοπικό repo: git checkout -b develop 2. Να κάνεις push το τοπικό develop στο origin develop git push --set-upstream origin develop Το flag --set-upstream σημαίνει "από εδώ και στο εξής το current branch θα κάνει push στο argument που σου έδωσα, δηλαδή το τοπικό branch develop θα κάνει push στο branch develop του remote με το όνομα origin" Επεξ/σία 6 Απριλίου από pmav99 1 Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 Dr.Fuzzy 1.525 Δημοσ. 6 Απριλίου Μέλος Share Δημοσ. 6 Απριλίου 10 minutes ago, pmav99 said: Λογικά θέλει 1. να δημιουργήσεις το branch develop στο τοπικό repo: git checkout -b develop 2. Να κάνεις push το τοπικό develop στο origin develop git push --set-upstream origin develop Το flag --set-upstream σημαίνει "από εδώ και στο εξής το current branch θα κάνει push στο argument που σου έδωσα, δηλαδή το τοπικό branch develop θα κάνει push στο branch develop του remote με το όνομα origin" Άψογος ευχαριστώ! Φαντάζομαι διότι έκανα βλακεία και δημιούργησα το branch γραφικά μέσα απο το bitbucket που είναι το remote repo χωρίς να το δημιουργήσω locally. Δηλαδή στο git checkout origin/develop που έδωσα επρεπε να εχω βάλει -b για να το δημιουργήσει και τοπικά εφόσον δεν υπήρχε. Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 pmav99 1.541 Δημοσ. 6 Απριλίου Share Δημοσ. 6 Απριλίου (επεξεργασμένο) Λογικά και τώρα όταν έκανες checkout θα σου έγραψε ότι είσαι σε DETACHED HEAD ή κάτι τέτοιο, το οποίο σημαίνει ότι δεν υπάρχει τοπικό branch Σε γενικές γραμμές, ναι, όταν θέλεις να κάνεςι develop κάτι ξεκίνα από το local branch και άσε τα GUI στην ησυχία τους edit Αν θες να εμβαθύνεις λίγο μου έχουν πει καλά λόγια για αυτό https://learngitbranching.js.org/ Επεξ/σία 6 Απριλίου από pmav99 1 Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 Dr.Fuzzy 1.525 Δημοσ. 6 Απριλίου Μέλος Share Δημοσ. 6 Απριλίου (επεξεργασμένο) 14 minutes ago, pmav99 said: Λογικά και τώρα όταν έκανες checkout θα σου έγραψε ότι είσαι σε DETACHED HEAD ή κάτι τέτοιο, το οποίο σημαίνει ότι δεν υπάρχει τοπικό branch Σε γενικές γραμμές, ναι, όταν θέλεις να κάνεςι develop κάτι ξεκίνα από το local branch και άσε τα GUI στην ησυχία τους edit Αν θες να εμβαθύνεις λίγο μου έχουν πει καλά λόγια για αυτό https://learngitbranching.js.org/ Γενικά δεν είμαι του GUI...δε ξέρω πως μου ήρθε! Ωραίος θα το δω. Άσχετη ερώτηση. Υπάρχει δυνατότητα στο Git να γίνουν commit τα files με το modification timestamp και όχι με το current commit timestamp. Για παράδειγμα κάνω modify τα αρχεία στο local repo σήμερα αλλά τα κάνω commit και push στο remote μετά από 2 μήνες. Μπορεί στο commit log η ημερομηνία να είναι αυτή που γίνανε modify; Νομίζω αν θυμάμαι καλά παλιά στο CVS και το Clearcase γινόταν. Επεξ/σία 6 Απριλίου από Dr.Fuzzy Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 MitsarasAth 159 Δημοσ. 6 Απριλίου Share Δημοσ. 6 Απριλίου οκ καλο ειναι ν αξερεις το command line του git να εχεις ιδεα, αλλα καπου οπα. στα απλα πραγματα οπως checkout, push ,merge κτλ μια χαρα βοηθαει το gui να γινεται η δουλεια γρηγορα και safe . devs με 15 χρονια στον χωρο μαι χαρα πατανε τα κουμπακια στο ui σαν γιαγιαδες και γινεται η δουλεια.. Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 Dr.Fuzzy 1.525 Δημοσ. 6 Απριλίου Μέλος Share Δημοσ. 6 Απριλίου 13 minutes ago, MitsarasAth said: οκ καλο ειναι ν αξερεις το command line του git να εχεις ιδεα, αλλα καπου οπα. στα απλα πραγματα οπως checkout, push ,merge κτλ μια χαρα βοηθαει το gui να γινεται η δουλεια γρηγορα και safe . devs με 15 χρονια στον χωρο μαι χαρα πατανε τα κουμπακια στο ui σαν γιαγιαδες και γινεται η δουλεια.. Ο,τι βολεύει τον καθένα. Προσωπικά προτιμώ terminal (όχι μόνο για το git). Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 pmav99 1.541 Δημοσ. 6 Απριλίου Share Δημοσ. 6 Απριλίου (επεξεργασμένο) 1 hour ago, Dr.Fuzzy said: Άσχετη ερώτηση. Υπάρχει δυνατότητα στο Git να γίνουν commit τα files με το modification timestamp και όχι με το current commit timestamp. Για παράδειγμα κάνω modify τα αρχεία στο local repo σήμερα αλλά τα κάνω commit και push στο remote μετά από 2 μήνες. Μπορεί στο commit log η ημερομηνία να είναι αυτή που γίνανε modify; Νομίζω αν θυμάμαι καλά παλιά στο CVS και το Clearcase γινόταν. Από όσο ξέρω υπάρχουν 2 dates. Author date και committer date. Aυτές από default ταυτίζονται. Λογικά μπορείς να τις αλλάξεις για να εξυπηρετήσεις σενάρια όπως πχ σου στείλει κάποιος patches και τα κάνεις εσύ commit. Τις ημερομηνίες αυτές μπορείς να τις αλλάξεις ακόμα και μετά το commit (πριν το push όμως!). Παρόλα αυτά, το modification time που αναφέρεις IMHV δεν έχει νόημα. Πχ σε ένα commit αλλάζεις 5 αρχεία. Και τα 5 έχουν διαφορετικό modification time. Ποιο θα χρησιμοποιήσεις; Σκέψου να αρχίσεις και τα rebase και τα cherry-picking κτλ. Όπως και αν έχει, αν αυτό που θες είναι να αλλάξεις τα dates σε πολλά commits, μπορείς να χρησιμοποιήσεις κάτι που είχα γράψει παλιότερα: https://github.com/pmav99/git-rewrite (btw, νομίζω ότι και πάλι με αφορμή δική σου ερώτηση το είχα σουλουπώσει και ανεβάσει ) Αν είναι μόνο για ένα, αρκεί να κάνεις `git commit --amend` και ορίζεις μερικές env variables. Δες εδώ: https://codewithhugo.com/change-the-date-of-a-git-commit/ Επεξ/σία 6 Απριλίου από pmav99 1 Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 Dr.Fuzzy 1.525 Δημοσ. 6 Απριλίου Μέλος Share Δημοσ. 6 Απριλίου Χαχα είναι motivating οι ερωτήσεις μου!😀 Έχεις δίκιο, έτσι όπως το έθεσα δεν έχει ιδιαίτερο νόημα. Αυτό που πραγματικά εννοούσα είναι αν γίνεται να γίνει preserved πχ το file creation timestamp του αρχείου (utime) κατά το commit και restore όταν γίνει clone το repo. Υπάρχει νομίζω κάτι στο git-tools και στο metastore αλλά δεν τα έχω δοκιμάσει. btw πολύ helpful το git-rewite. 1 Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 pmav99 1.541 Δημοσ. 7 Απριλίου Share Δημοσ. 7 Απριλίου (επεξεργασμένο) Για να είμαι απόλυτα ειλικρινής δεν μπορώ να σκεφτώ σενάριο που θα με ενδιάφερε τόσο πολύ το creation/modification time + μου φαίνεται abuse του POSIX. Δηλαδή, αν κάνω git clone ένα repo τα timestamps δεν θα είναι στην ώρα που έκανα το clone; Νομίζω ότι θα με παραξένευε αρκετά κάτι τέτοιο αν το πρόσεχα. PS. Αν θες το utime τόσο πολύ γιατί δεν τα αποθηκεύεις σαν σχόλιο σε κάθε αρχείο; θα μπορούσες να γράψεις και ένα git pre-commit hook που θα ελέγχει αν υπάρχει τέτοιο σχόλιο σε κάθε αρχείο και αν όχι να το προσθέτει πριν το commit (αν και μου παραφαίνεται τραβηγμένο...). Επεξ/σία 7 Απριλίου από pmav99 1 Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
0 Dr.Fuzzy 1.525 Δημοσ. 7 Απριλίου Μέλος Share Δημοσ. 7 Απριλίου 16 hours ago, pmav99 said: PS. Αν θες το utime τόσο πολύ γιατί δεν τα αποθηκεύεις σαν σχόλιο σε κάθε αρχείο; Ναι θα μπορούσα πριν το commit εύκολα με ενα sed να βρίσκει το @date field στο header comment και να βαζει το file modfication timestamp var1=$(date -r tri2d.cpp +'%Y-%m-%d %H:%M:%S'); sed -i '' "s/@date.*/@date $var1/" tri2d.cpp Σύνδεσμος στην ανάρτηση Κοινοποίηση σε άλλες σελίδες
Ερώτηση
Dr.Fuzzy 1.525
Μικρή βοήθεια πριν κάνω μεγάλη πατάτα!
Στο local repo έκανα κάποιες αλλαγές που ήθελα να τις κάνω push σε ξεχωριστό branch (develop) από το master.
git checkout origin/develop git add . git commit -m "Modify code to use N-ary tree" git push origin origin/develop
και όπως το βλέπω τώρα μάλλον στο push έκανα τη μλκ. Tα branches που έχω locally/remotely:
* (HEAD detached from origin/develop)
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
και το log μου:
commit 51348744c5222663aeb415c83c51706b5d4c78a6 (HEAD)
Author: DrFuzzy
Date: Tue Apr 6 17:53:32 2021 +0300
Modify code to use N-ary tree
commit b56f40480ff7135dc58ebcfe6378b80ffd4baa6d (tag: v1.6.1, origin/master, origin/develop, origin/HEAD)
Author: DrFuzzy
Date: Sun Dec 15 16:15:46 2019 +0000
Replace absolute symlinks with original files
commit 5164f3d09b6b1cc6a5bdea2e47e04d5236d2266a (tag: v1.6.0, master)
Author: DrFuzzy
Date: Mon Mar 18 17:09:36 2019 +0200
Store edge matrix to off-chip SDRAM
To commit που ήθελα να πάει στην develop είναι το commit 51348744c5222663aeb415c83c51706b5d4c78a6 (HEAD) και είναι locally μόνο βάσει του log.
Φαντάζομαι ότι πρέπει να κάνω git push origin/develop HEAD για να συγχρονιστεί το local με το remote αλλά δεν είμαι σίγουρος.
Επεξ/σία από Dr.FuzzyΣύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
12 απαντήσεις σε αυτή την ερώτηση
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Εγγραφείτε για έναν νέο λογαριασμόΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα