Dr.Fuzzy Δημοσ. 6 Απριλίου 2021 Δημοσ. 6 Απριλίου 2021 (επεξεργασμένο) Μικρή βοήθεια πριν κάνω μεγάλη πατάτα! Στο 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 Απριλίου 2021 από Dr.Fuzzy
pmav99 Δημοσ. 6 Απριλίου 2021 Δημοσ. 6 Απριλίου 2021 Για να βγάλουμε άκρη, άνοιξε το `~/.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
Dr.Fuzzy Δημοσ. 6 Απριλίου 2021 Μέλος Δημοσ. 6 Απριλίου 2021 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)
pmav99 Δημοσ. 6 Απριλίου 2021 Δημοσ. 6 Απριλίου 2021 (επεξεργασμένο) Λογικά θέλει 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 Απριλίου 2021 από pmav99 1
Dr.Fuzzy Δημοσ. 6 Απριλίου 2021 Μέλος Δημοσ. 6 Απριλίου 2021 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 για να το δημιουργήσει και τοπικά εφόσον δεν υπήρχε.
pmav99 Δημοσ. 6 Απριλίου 2021 Δημοσ. 6 Απριλίου 2021 (επεξεργασμένο) Λογικά και τώρα όταν έκανες checkout θα σου έγραψε ότι είσαι σε DETACHED HEAD ή κάτι τέτοιο, το οποίο σημαίνει ότι δεν υπάρχει τοπικό branch Σε γενικές γραμμές, ναι, όταν θέλεις να κάνεςι develop κάτι ξεκίνα από το local branch και άσε τα GUI στην ησυχία τους edit Αν θες να εμβαθύνεις λίγο μου έχουν πει καλά λόγια για αυτό https://learngitbranching.js.org/ Επεξ/σία 6 Απριλίου 2021 από pmav99 1
Dr.Fuzzy Δημοσ. 6 Απριλίου 2021 Μέλος Δημοσ. 6 Απριλίου 2021 (επεξεργασμένο) 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 Απριλίου 2021 από Dr.Fuzzy
MitsarasAth Δημοσ. 6 Απριλίου 2021 Δημοσ. 6 Απριλίου 2021 οκ καλο ειναι ν αξερεις το command line του git να εχεις ιδεα, αλλα καπου οπα. στα απλα πραγματα οπως checkout, push ,merge κτλ μια χαρα βοηθαει το gui να γινεται η δουλεια γρηγορα και safe . devs με 15 χρονια στον χωρο μαι χαρα πατανε τα κουμπακια στο ui σαν γιαγιαδες και γινεται η δουλεια..
Dr.Fuzzy Δημοσ. 6 Απριλίου 2021 Μέλος Δημοσ. 6 Απριλίου 2021 13 minutes ago, MitsarasAth said: οκ καλο ειναι ν αξερεις το command line του git να εχεις ιδεα, αλλα καπου οπα. στα απλα πραγματα οπως checkout, push ,merge κτλ μια χαρα βοηθαει το gui να γινεται η δουλεια γρηγορα και safe . devs με 15 χρονια στον χωρο μαι χαρα πατανε τα κουμπακια στο ui σαν γιαγιαδες και γινεται η δουλεια.. Ο,τι βολεύει τον καθένα. Προσωπικά προτιμώ terminal (όχι μόνο για το git).
pmav99 Δημοσ. 6 Απριλίου 2021 Δημοσ. 6 Απριλίου 2021 (επεξεργασμένο) 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 Απριλίου 2021 από pmav99 1
Dr.Fuzzy Δημοσ. 6 Απριλίου 2021 Μέλος Δημοσ. 6 Απριλίου 2021 Χαχα είναι motivating οι ερωτήσεις μου!😀 Έχεις δίκιο, έτσι όπως το έθεσα δεν έχει ιδιαίτερο νόημα. Αυτό που πραγματικά εννοούσα είναι αν γίνεται να γίνει preserved πχ το file creation timestamp του αρχείου (utime) κατά το commit και restore όταν γίνει clone το repo. Υπάρχει νομίζω κάτι στο git-tools και στο metastore αλλά δεν τα έχω δοκιμάσει. btw πολύ helpful το git-rewite. 1
pmav99 Δημοσ. 7 Απριλίου 2021 Δημοσ. 7 Απριλίου 2021 (επεξεργασμένο) Για να είμαι απόλυτα ειλικρινής δεν μπορώ να σκεφτώ σενάριο που θα με ενδιάφερε τόσο πολύ το creation/modification time + μου φαίνεται abuse του POSIX. Δηλαδή, αν κάνω git clone ένα repo τα timestamps δεν θα είναι στην ώρα που έκανα το clone; Νομίζω ότι θα με παραξένευε αρκετά κάτι τέτοιο αν το πρόσεχα. PS. Αν θες το utime τόσο πολύ γιατί δεν τα αποθηκεύεις σαν σχόλιο σε κάθε αρχείο; θα μπορούσες να γράψεις και ένα git pre-commit hook που θα ελέγχει αν υπάρχει τέτοιο σχόλιο σε κάθε αρχείο και αν όχι να το προσθέτει πριν το commit (αν και μου παραφαίνεται τραβηγμένο...). Επεξ/σία 7 Απριλίου 2021 από pmav99 1
Dr.Fuzzy Δημοσ. 7 Απριλίου 2021 Μέλος Δημοσ. 7 Απριλίου 2021 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
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα