Το "σκονάκι" για το Git σας γλιτώνει από την εκμάθηση όλων των εντολών απ' έξω.
Είστε ελεύθεροι να συνεισφέρετε και να ενημερώσετε τα λάθη γραμματικής. Είστε επίσης ελεύθεροι να προσθέσετε το αρχείο στη γλώσσα σας.
- Ρύθμιση
- Αρχεία ρυθμίσεων
- Δημιουργία
- Τοπικές αλλαγές
- Αναζήτηση
- Ιστορικό commit
- Διακλαδώσεις & Ετικέτες
- Ενημέρωση & Δημοσίευση
- Συγχώνευση & Αναπροσαρμογή
- Αναίρεση
- Git Flow
$ git config --list
$ git config --local --list
$ git config --global --list
$ git config --system --list
$ git config --global user.name “[firstname lastname]”
$ git config --global user.email “[valid-email]”
$ git config --global color.ui auto
$ git config --global core.editor vi
<repo>/.git/config
~/.gitconfig
/etc/gitconfig
Υπάρχουν δύο τρόποι:
Με SSH
$ git clone ssh://[email protected]/repo.git
Με HTTP
$ git clone http://domain.com/user/repo.git
$ git init
## Τοπικές αλλαγές
$ git status
$ git diff
$ git add .
$ git add -p <file>
$ git commit -a
$ git commit
$ git commit -m 'message here'
$ git commit -am 'message here'
git commit --date="`date --date='n day ago'`" -am "Commit Message"
Μην τροποποιήσεις τα δημοσιευμένα commits!
$ git commit -a --amend
GIT_COMMITTER_DATE="date" git commit --amend
git commit --amend --date="date"
git stash
git checkout branch2
git stash pop
git stash apply
git stash drop
$ git grep "Hello"
$ git grep "Hello" v2.5
Εμφάνισε όλα τα commits, ξεκινώντας από το πιο πρόσφατο (θα εμφανίσει το hash, πληροφορίες για τον συγγραφέα, ημερομηνία του commit και τίτλο του commit):
$ git log
$ git log --oneline
$ git log --author="username"
$ git log -p <file>
$ git log --oneline <origin/master>..<remote/master> --left-right
$ git blame <file>
$ git reflog show
$ git reflog delete
$ git branch
$ git branch -r
$ git checkout <branch>
$ git checkout -b <branch>
$ git branch <new-branch>
$ git branch --track <new-branch> <remote-branch>
$ git branch -d <branch>
Θα χάσετε όλες τις αλλαγές που δεν έχουν συγχωνευθεί!
$ git branch -D <branch>
$ git tag <tag-name>
$ git tag -a <tag-name>
$ git remote -v
$ git remote show <remote>
$ git remote add <remote> <url>
$ git fetch <remote>
$ git remote pull <remote> <url>
$ git pull origin master
git pull --rebase <remote> <branch>
$ git push remote <remote> <branch>
$ git push <remote> :<branch> (από την έκδοση Git v1.5.0)
ή
git push <remote> --delete <branch> (από την έκδοση Git v1.7.0)
$ git push --tags
$ git merge <branch>
ΜΗΝ αναπροσαρμόσετε δημοσιευσμένα commit!
$ git rebase <branch>
$ git rebase --abort
$ git rebase --continue
$ git mergetool
Χρησιμοποιείστε τον επεξεργαστή κειμένου για να λύσετε χειροκίνητα τις συγκρούσεις και (μετά μετά την επίλυση) σημείωσε το αρχείο ως επιλυμένο:
$ git add <resolved-file>
$ git rm <resolved-file>
$ git rebase -i <commit-just-before-first>
Τώρα αντικατέστησε αυτό,
pick <commit_id>
pick <commit_id2>
pick <commit_id3>
με αυτό,
pick <commit_id>
squash <commit_id2>
squash <commit_id3>
$ git reset --hard HEAD
$ git reset HEAD
$ git checkout HEAD <file>
Επαναφορά ενός commit (δημιουργώντας ένα νέο commit με αντίθετες αλλαγές): (by producing a new commit with contrary changes):
$ git revert <commit>
$ git reset --hard <commit>
git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature
$ git reset <commit>
Επαναφορά του δείκτη HEAD σε ενα προηγούμενο commit και διατήρησε τις τοπικές αλλαγές που είναι uncommitted:
$ git reset --keep <commit>
$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"
Θα χρειαστείτε μια λειτουργική εγκατάσταση του Git. Το Git flow λειτουργεί σε OSX, Linux και Windows.
$ brew install git-flow
$ port install git-flow
$ apt-get install git-flow
$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash
Το Git flow πρέπει να αρχικοποιηθεί ώστε να προσαρμόσει το project σας. Ξεκινήστε να χρησιμοποιείτε το git-flow αρχικοποιώντας το σε ένα ήδη υπάρχον git αποθετήριο:
Θα χρειαστεί να απαντήσετε σε μερικές ερωτήσεις σχετικά με τις συμβάσεις ονοματοδοσίας των διαδλαδώσεών σας. Προτείνεται να χρησιμοποιήσετε τις προκαθορισμένες τιμές.
git flow init
Ανάπτυξη νέων χαρακτηριστικών για τα επερχόμενα releases. Συνήθως υπάρχουν μόνο σε αποθετήρια ανάπτυξης (develop).
Αυτή η ενέργεια δημιουργεί μία νέα διακλάδωση για το χαρακτηριστικό βασιζόμενη στη 'develop' και "πηγαίνει" σε αυτή.
git flow feature start MYFEATURE
git flow feature finish MYFEATURE
Αναπτύσσετε ένα χαρακτηριστικό μαζί με άλλους; Δημοσιεύστε το χαρακτηριστικό αυτό σε έναν απομεκρυσμένο διακομιστή ώστε να χρησιμοποιηθεί και από άλλους χρήστες.
git flow feature publish MYFEATURE
git flow feature pull origin MYFEATURE
git flow feature track MYFEATURE
Προετοιμασία μιας νέας έκδοσης production. Υπάρχει το περιθώριο για μικρές διορθώσεις σφαλμάτων και την προετοιμασία των μετα-δεδομένων για το release
Για να ξεκινήσετε ένα release, χρησιμοποιείστε την εντολή release του git flow. Δημιουργεί μία νέα 'release' διακλάδωση βασιζόμενη στην 'develop'. Προαιρετικά μπορείτε να χρησιμοποιήσετε ένα [BASE] commit sha-1 hash από όπου θα ξεκινήσει το release. Αυτό το commit πρέπει να είναι στη διακλάδωση 'develop'.
git flow release start RELEASE [BASE]
Είναι σοφό να δημοσιεύσετε τη διακλάδωση release μετά τη δημιουργία της ώστε να επιτρέψετε να την δουν κ άλλοι προγραμματιστές. Γίνεται παρόμοια με την εντολή δημοσίευσης του 'feature':
git flow release publish RELEASE
git flow release track RELEASE
Το τελείωμα ενός release είναι ένα από τα μεγαλύτερα βήματα στο git branching. Εκτελούνται τα ακόλουθα βήματα:
git flow release finish RELEASE
Οι επείγουσες επιδιορθώσεις προκύπτουν από την ανάγκη να ενεργήσει κάποιος αμέσως μετά από μία ανεπιθύμητη κατάσταση μιας έκδοσης που τρέχει σε production. Μπορεί να διακλαδωθεί από μία ετικέτα στη 'master' διακλάδωση που σηματοδοτεί την production έκδοση.
$ git flow hotfix start VERSION [BASENAME]
Η έκδοση σηματοδοτεί το νέο όνομα του release μαζί με το hotfix. Προειρετικά μπορείτε να ορίσετε ένα όνομα που να ξεκινάει με αυτό (basename).
Τελειώνοντας ένα hotfix γίνεται συγχώνευση πίσω στο develop και στο master. Επιπλέον στο master δημιουργείται μία ετικέτα με την έκδοση του hotfix
git flow hotfix finish VERSION