You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/A-git-in-other-environments/sections/bash.asc
+13-12Lines changed: 13 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,16 @@
2
2
3
3
(((bash)))(((συμπλήρωση με tab, bash)))(((προτροπή κελύφους, bash)))
4
4
Αν είμαστε χρήστες του Bash, μπορούμε να αξιοποιήσουμε κάποιες από τις λειτουργίες του κελύφους μας για να κάνουμε την εμπειρία μας με το Git πολύ πιο φιλική.
5
-
Το Git στην πραγματικότητα φέρει plugins για πολλά κελύφη, αλλά δεν είναι ενεργοποιημένο εκ προεπιλογής.
5
+
Το Git στην πραγματικότητα φέρει plugins για πολλά κελύφη (shells), αλλά δεν είναι ενεργοποιημένα από προεπιλογής.
6
6
7
-
Πρώτον, πρέπει να λάβουμε ένα αντίγραφο του αρχείου `contrib/completion/git-completion.bash` εκτός του πηγαίου κώδικα Git.
8
-
Το αντιγράφουμε κάπου βολικά, όπως στον αρχικό μας κατάλογο και προσθέτουμε το παρακάτω στο `.bashrc` μας:
7
+
Πρώτον, πρέπει να λάβουμε ένα αντίγραφο του αρχείου `contrib/completion/git-completion.bash` από τον πηγαίο κώδικα της Git έκδοσης που χρησιμοποιούμε.
8
+
Ελέγχουμε την έκδοση πληκτρολογώντας `git version`, μετά χρησιμοποιούμε `git checkout tags/vX.Y.Z`, όπου το `vX.Y.Z` αντιστοιχεί στην έκδοση του Git που χρησιμοποιούμε.
9
+
Αντιγράφουμε κάπου βολικά το αρχείο `contrib/completion/git-completion.bash`, όπως στον αρχικό (home) μας κατάλογο και προσθέτουμε το παρακάτω στο `.bashrc` μας:
9
10
10
11
[source,console]
11
-
-----
12
+
----
12
13
. ~/git-completion.bash
13
-
-----
14
+
----
14
15
15
16
Μόλις γίνει αυτό, αλλάζουμε τον κατάλογο σε ένα αποθετήριο Git και πληκτρολογούμε:
16
17
@@ -19,24 +20,24 @@
19
20
$ git chec<tab>
20
21
----
21
22
22
-
... και το Bash θα ολοκληρώσε αυτόματα σε `git checkout`.
23
+
... και το Bash θα ολοκληρωθεί αυτόματα σε `git checkout`.
23
24
Αυτό λειτουργεί με όλες τις δευτερεύουσες εντολές του Git, τις παραμέτρους της γραμμής εντολών και τα απομακρυσμένα αποθετήρια και τα ονόματα ref, όπου χρειάζεται.
24
25
25
26
Είναι επίσης χρήσιμο να προσαρμόσουμε την προτροπή μας ώστε να εμφανίζονται πληροφορίες σχετικά με το αποθετήριο Git του τρέχοντος καταλόγου.
26
-
Αυτό μπορεί να είναι τόσο απλό όσο και πολύπλοκο όσο θέλουμε, αλλά υπάρχουν γενικά μερικά βασικά κομμάτια πληροφοριών που ο περισσότερος κόσμος θέλει, όπως ο τρέχων κλάδος, και η κατάσταση του καταλόγου εργασίας.
27
-
Για να τα προσθέσουμε στην προτροπή μας, απλά αντιγράφουμε το αρχείο `contrib/completion/git-prompt.sh` από τον αποθετήριο πηγαίου κώδικα του Git στον οικείο κατάλογό μας, προσθέτουμε κάτι τέτοιο στο` .bashrc` μας:
27
+
Αυτό μπορεί να είναι τόσο απλό ή όσο πολύπλοκο θέλουμε, αλλά υπάρχουν γενικά μερικά βασικά κομμάτια πληροφοριών που ο περισσότερος κόσμος θέλει, όπως ο τρέχων κλάδος, και η κατάσταση του καταλόγου εργασίας.
28
+
Για να τα προσθέσουμε στην προτροπή μας, απλά αντιγράφουμε το αρχείο `contrib/completion/git-prompt.sh` από το αποθετήριο πηγαίου κώδικα του Git στον αρχικό (home) κατάλογό μας, και προσθέτουμε αυτό στο`.bashrc` μας:
28
29
29
30
[source,console]
30
-
-----
31
+
----
31
32
. ~/git-prompt.sh
32
33
export GIT_PS1_SHOWDIRTYSTATE=1
33
34
export PS1='\w$(__git_ps1 " (%s)")\$ '
34
-
-----
35
+
----
35
36
36
37
Το `\w` σημαίνει την εκτύπωση του τρέχοντος καταλόγου εργασίας, το `\$` εκτυπώνει το τμήμα `$` της προτροπής και το `__git_ps1 " (%s)"` καλεί τη λειτουργία που παρέχεται από το `git-prompt.sh` με ένα όρισμα μορφοποίησης.
37
38
Τώρα η προτροπή του bash θα μοιάζει με αυτό όταν είμαστε οπουδήποτε μέσα σε ένα έργο που ελέγχεται από το Git:
Και τα δύο αυτά σενάρια έρχονται με χρήσιμη τεκμηρίωση· περισσότερες πληροφορίες μπορεί να βρει κανείς στα περιεχόμενα των `git-completion.bash` και `git-prompt.sh`.
Ξεκινώντας με τo Visual Studio 2013 Update 1, οι χρήστες του Visual Studio διαθέτουν ένα πρόγραμμα-πελάτη Git ενσωματωμένο απευθείας στο IDE τους.
5
-
Το Visual Studio διαθέτει χαρακτηριστικά ενσωμάτωσης ελέγχου πηγαίου κώδικα εδώ και αρκετό καιρό, αλλά ήταν προσανατολισμένα προς συγκεντρωτικά συστήματα με κλείδωμα αρχείων και το Git δεν ταίριαζε σε αυτήν τη ροή εργασίας.
6
-
Η υποστήριξη του Git από το Visual Studio 2013 έχει διαχωριστεί από αυτήν την παλαιότερη λειτουργία και το αποτέλεσμα είναι μία πολύ καλύτερη προσαρμογή μεταξύ του Studio και του Git.
4
+
Το Visual Studio έχει το Git εργαλείο προεγκατεστημένο μέσα στον επεξεργαστή κειμένου, ξεκινόντας με το Visual Studio 2019 έκδοση 16.8.
7
5
8
-
Για να εντοπίσουμε τη λειτουργία, ανοίγουμε ένα έργο που ελέγχεται από το Git (ή απλώς τρέχουμε `git init` σε ένα υπάρχον έργο) και επιλέγουμε View > Team Explorer από το μενού.
9
-
Θα δούμε την προβολή ``Σύνδεση'', η οποία μοιάζει λίγο σαν αυτό:
6
+
Το εργαλείο υποστηρίζει τις παρακάτω Git λειτουργίες:
10
7
11
-
.Σύνδεση σε αποθετήριο του Git με τον Team Explorer.
12
-
image::images/vs-1.png[Σύνδεση σε αποθετήριο του Git με τον Team Explorer.]
8
+
* Δημιουργία ή κλωνοποίηση αποθετηρίου.
9
+
* Άνοιγμα και περιήγηση στο ιστορικού του αποθετηρίου.
10
+
* Δημιρουγία και ενημέρωση κλάδων και ετικετών.
11
+
* Φύλαξη, καταχώριση, και υποβολή αλλαγών.
12
+
* Τράβηγμα, έλξη, ώθηση, ή συγχρονισμός υποβολών.
13
+
* Συγχώνευση και αλλαγή βάσης (rebase) κλάδων
14
+
* Επίλυση συγκρούσεων συγχώνευσης
15
+
* Προβολή διαφορών
16
+
* ... και άλλα!
13
17
14
-
Το Visual Studio θυμάται όλα τα έργα Git που έχουμε ανοίξει και μάς τα διαθέτει στη λίστα στο κάτω μέρος.
15
-
Αν δεν βλέπουμε αυτό που θέλουμε εκεί, κάνουμε κλικ στο σύνδεσμο ``Add'' και πληκτρολογούμε τη διαδρομή στον κατάλογο εργασίας.
16
-
Αν κάνουμε διπλό κλικ σε ένα από τα τοπικά αποθετήρια Git, θα οδηγηθούμε στην προβολή ``Home'', η οποία μοιάζει με την εικόνα <<rvs_home>>.
17
-
Αυτό είναι ένα κεντρικό σημείο για την εκτέλεση ενεργειών Git· όταν _γράφουμε_ κώδικα, πιθανότατα θα περάσουμε το μεγαλύτερο μέρος του χρόνου μας στην προβολή ``Changes'', αλλά όταν έρθει η ώρα να έλξουμε τις αλλαγές που έγιναν από τους συνεργάτες μας, θα χρησιμοποιήσουμε τις προβολές ``Unsynced Commits'' και ``Branches''.
18
-
19
-
[[rvs_home]]
20
-
.Η προβολή ``Home'' για ένα αποθετήριο Git στο Visual Studio.
21
-
image::images/vs-2.png[Η προβολή ``Home'' για ένα αποθετήριο Git στο Visual Studio.]
22
-
23
-
Το Visual Studio διαθέτει τώρα ένα ισχυρό UI για το Git.
24
-
Περιλαμβάνει μια προβολή γραμμικού ιστορικού, προβολή diff, απομακρυσμένες εντολές και πολλές άλλες δυνατότητες.
25
-
Πλήρης τεκμηρίωση αυτής της δυνατότητας (που δεν χωράει εδώ), υπάρχει στη διεύθυνση http://msdn.microsoft.com/en-us/library/hh850437.aspx[].
18
+
Για να μάθουμε περισσότερα μπορούμε να διαβάσουμε εδώ https://learn.microsoft.com/en-us/visualstudio/version-control/[official documentation^]
cherry-pick -- apply changes introduced by some existing commits
17
17
----
18
18
19
-
Οι αμφισβητούμενες συμπληρώσεις με tab δεν αναφέρονται απλά· έχουν χρήσιμες περιγραφές και μπορούμε να πλοηγηθούμε γραφικά στη λίστα πατώντας επανειλημμένα την καρτέλα.
19
+
Οι αμφισβητούμενες συμπληρώσεις με tab δεν αναφέρονται απλά· έχουν χρήσιμες περιγραφές και μπορούμε να πλοηγηθούμε γραφικά στη λίστα πατώντας επανειλημμένα το κουμπί tab.
20
20
Αυτό λειτουργεί με εντολές Git, τα ορίσματά τους και τα ονόματα άλλων πραγμάτων μέσα στο αποθετήριο (όπως refs και απομακρυσμένα αποθετήρια), καθώς και τα ονόματα αρχείων και όλα τα άλλα πράγματα, τα οποία γνωρίζει το Zsh πώς να τα συμπληρώσει με tab.
21
21
22
-
Το Zsh συμβαίνει να είναι αρκετά συμβατό με το Bash όταν πρόκειται για την εξατομίκευση της προτροπής, αλλά μας επιτρέπει να έχουμε και μια προτροπή από τα δεξιά.
23
-
Για να συμπεριλάβουμε το όνομα του κλάδου στη δεξιά πλευρά, προσθέοτυμε αυτές τις γραμμές στο αρχείο `~/.zshrc`:
22
+
Το Zsh έρχεται με ένα πλαίσιο (framework) για να πάρουμε πληροφορίες από το σύστημα ελέγχου εκδόσεων (version control system, VCS), που ονομάζεται `vcs_info`.
23
+
Για να συμπεριλάβουμε το όνομα του κλάδου στην δεξία πλευρά της προτροπής, προσθέτουμε τις παρακάτω γραμμές στο `~/.zshrc` αρχείο μας.
24
24
25
25
[source,console]
26
26
----
27
+
autoload -Uz vcs_info
28
+
precmd_vcs_info() { vcs_info }
29
+
precmd_functions+=( precmd_vcs_info )
27
30
setopt prompt_subst
28
-
. ~/git-prompt.sh
29
-
export RPROMPT=$'$(__git_ps1 "%s")'
31
+
RPROMPT='${vcs_info_msg_0_}'
32
+
# PROMPT='${vcs_info_msg_0_}%# '
33
+
zstyle ':vcs_info:git:*' formats '%b'
30
34
----
31
35
32
36
Αυτό έχει ως αποτέλεσμα την εμφάνιση του τρέχοντος κλάδου στη δεξιά πλευρά του παραθύρου του τερματικού, όποτε το κέλυφος μας βρίσκεται μέσα σε ένα αποθετήριο Git.
37
+
Η αριστερή πλευρά επίσης υποστηρίζεται, προφανώς, απλώς βγάζουμε από σχόλιο την ανάθεση στο `PROMPT`.
33
38
Μοιάζει λίγο σαν αυτό:
34
39
35
-
.Εξατομικευμένη προτροπή στο `zsh`.
36
-
image::images/zsh-prompt.png[Εξατομικευμένη προτροπή στο `zsh`.]
40
+
.Εξατομικευμένη προτροπή στο `zsh`
41
+
image::images/zsh-prompt.png[Εξατομικευμένη προτροπή στο `zsh`]
42
+
43
+
Για περισσότερες πληροφορίες στο `vcs_info`, κοιτάζουμε την τεκμηρίωση στο `zshcontrib(1)` στην σελίδα χειρισμού (manual page), ή διαδικτυακά https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information[^].
44
+
45
+
Αντί για `vcs_info`, μπορεί να προτιμούμε το script προτροπής με προσαρμογή (customization) που έρχεται με το Git, με το όνομα `git-prompt.sh`· βλέπουμε εδώ https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh[^] για περισσότερες πληροφορίες.
46
+
Το `git-prompt.sh` είναι συμβατό και με το Bash κα το Zsh.
37
47
38
48
Το Zsh είναι αρκετά ισχυρό ώστε να υπάρχουν ολόκληρα πλαίσια που είναι αφιερωμένα στο να το καταστήσουν καλύτερο.
39
-
Ένα από αυτά ονομάζεται `oh-my-zsh` και διατίθεται στη διεύθυνση https://github.com/robbyrussell/oh-my-zsh[].
40
-
Το σύστημα προσθήκης του oh-my-zsh έρχεται με ισχυρή συμπλήρωση με tab για το git και έχει μια ποικιλία από ``θέματα'', πολλά από τα οποία εμφανίζουν δεδομένα ελέγχου έκδοσης.
49
+
Ένα από αυτά ονομάζεται "oh-my-zsh" και διατίθεται στη διεύθυνση https://github.com/ohmyzsh/ohmyzsh[^].
50
+
Το σύστημα προσθήκης του oh-my-zsh έρχεται με ισχυρή συμπλήρωση με tab για το Git και έχει μια ποικιλία από "θέματα", πολλά από τα οποία εμφανίζουν δεδομένα ελέγχου έκδοσης.
41
51
Η εικόνα <<roh_my_zsh_git>> είναι μόνο ένα παράδειγμα του τι μπορεί να γίνει με αυτό το σύστημα.
42
52
43
53
[[roh_my_zsh_git]]
44
-
.Ένα παράδειγμα ενός θέματος `oh-my-zsh`.
45
-
image::images/zsh-oh-my.png[Ένα παράδειγμα ενός θέματος `oh-my-zsh`.]
54
+
.Ένα παράδειγμα ενός θέματος oh-my-zsh
55
+
image::images/zsh-oh-my.png[Ένα παράδειγμα ενός θέματος oh-my-zsh]
0 commit comments