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
You can run something like `git log 1a410e` to look through your whole history, but you still have to remember that `1a410e` is the last commit in order to walk that history to find all those objects.
5
-
You need a file in which you can store the SHA-1 value under a simple name so you can use that pointer rather than the raw SHA-1 value.
4
+
Μπορούμε να εκτελέσουμε κάτι σαν το `git log 1a410e` για να δούμε όλο το ιστορικό μας, αλλά πρέπει ακόμα να θυμόμαστε ότι η `1a410e` είναι η τελευταία υποβολή, για να διασχίσουμε εκείνο το ιστορικό και να βρούμε όλα αυτά τα αντικείμενα.
5
+
Χρειαζόμαστε ένα αρχείο στο οποίο μπορούμε να αποθηκεύσουμε την τιμή SHA-1 με ένα απλό όνομα, ώστε να μπορούμε να χρησιμοποιήσουμε αυτόν τον δείκτη και όχι την τιμή SHA-1.
6
6
7
-
In Git, these are called ``references'' or ``refs''; you can find the files that contain the SHA-1 values in the `.git/refs` directory.
8
-
In the current project, this directory contains no files, but it does contain a simple structure:
7
+
Στο Git, αυτά ονομάζονται ``αναφορές'' (references) ή ``refs''· μπορούμε να βρούμε τα αρχεία που περιέχουν τις τιμές SHA-1 στον κατάλογο `.git/refs`.
8
+
Στο τρέχον έργο, αυτός ο κατάλογος δεν περιέχει αρχεία, αλλά περιέχει μια απλή δομή:
9
9
10
10
[source,console]
11
11
----
@@ -16,14 +16,14 @@ $ find .git/refs
16
16
$ find .git/refs -type f
17
17
----
18
18
19
-
To create a new reference that will help you remember where your latest commit is, you can technically do something as simple as this:
19
+
Για να δημιουργήσουμε μια νέα αναφορά που θα μας βοηθήσει να θυμόμαστε πού είναι η τελευταία μας υποβολή, τεχνικά μπορούμε να κάνουμε κάτι τόσο απλό όπως το εξής:
That's basically what a branch in Git is: a simple pointer or reference to the head of a line of work.
45
-
To create a branch back at the second commit, you can do this:
44
+
Αυτό βασικά είναι τι είναι ένας κλάδος στο Git: ένας απλός δείκτης ή μια αναφορά στην κεφαλή μιας γραμμής εργασίας.
45
+
Για να δημιουργήσουμε έναν κλάδο πίσω στη δεύτερη υποβολή, μπορούμε να το κάνουμε το εξής:
46
46
47
47
[source,console]
48
48
----
49
49
$ git update-ref refs/heads/test cac0ca
50
50
----
51
51
52
-
Your branch will contain only work from that commit down:
52
+
Ο κλάδος μας θα περιέχει μόνο εργασίες από αυτήν την υποβολή και μετά:
53
53
54
54
[source,console]
55
55
----
@@ -58,49 +58,49 @@ cac0cab538b970a37ea1e769cbbde608743bc96d second commit
58
58
fdf4fc3344e67ab068f836878b6c4951e3b15f3d first commit
59
59
----
60
60
61
-
Now, your Git database conceptually looks something like this:
61
+
Τώρα, η βάση δεδομένων του Git μοιάζει με αυτό:
62
62
63
-
.Git directory objects with branch head references included.
64
-
image::images/data-model-4.png[Git directory objects with branch head references included.]
63
+
.Αντικείμενα του καταλόγου του Git συμπεριλαμβάνομένων αναφορών κεφαλής κλάδου.
64
+
image::images/data-model-4.png[Αντικείμενα του καταλόγου του Git συμπεριλαμβάνομένων αναφορών κεφαλής κλάδου.]
65
65
66
-
When you run commands like `git branch (branchname)`, Git basically runs that `update-ref` command to add the SHA-1 of the last commit of the branch you're on into whatever new reference you want to create.
66
+
Όταν εκτελούμε εντολές όπως η `git branch <όνομα_κλάδου>`, το Git βασικά τρέχει αυτήν την εντολή `update-ref` για να προσθέσει τον αριθμό SHA-1 της τελευταίας υποβολής του κλάδου στον οποίο βρισκόμαστε σε οποιαδήποτε νέα αναφορά θέλουμε να δημιουργήσουμε.
67
67
68
68
[[_the_head]]
69
-
==== The HEAD
69
+
==== Ο HEAD
70
70
71
-
The question now is, when you run `git branch (branchname)`, how does Git know the SHA-1 of the last commit?
72
-
The answer is the HEAD file.
71
+
Το ερώτημα τώρα είναι, όταν τρέχουμε την `git branch <όνομα_κλάδου>, πώς γνωρίζει το Git τον αριθμό SHA-1 της τελευταίας υποβολής;
72
+
Η απάντηση είναι το αρχείο HEAD.
73
73
74
-
The HEAD file is a symbolic reference to the branch you're currently on.
75
-
By symbolic reference, we mean that unlike a normal reference, it doesn’t generally contain a SHA-1 value but rather a pointer to another reference.
76
-
If you look at the file, you'll normally see something like this:
74
+
Το αρχείο HEAD είναι συμβολική αναφορά στον κλάδο στο οποίο βρισκόμαστε.
75
+
Με συμβολική αναφορά, εννοούμε ότι σε αντίθεση με μια κανονική αναφορά, δεν περιέχει γενικά μια τιμή SHA-1, αλλά έναν δείκτη σε μια άλλη αναφορά.
76
+
Εάν κοιτάξουμε το αρχείο, θα δούμε κάτι τέτοιο:
77
77
78
78
[source,console]
79
79
----
80
80
$ cat .git/HEAD
81
81
ref: refs/heads/master
82
82
----
83
83
84
-
If you run `git checkout test`, Git updates the file to look like this:
84
+
Αν εκτελέσουμε την `git checkout test`, το Git ενημερώνει το αρχείο ώστε να φαίνεται ως εξής:
85
85
86
86
[source,console]
87
87
----
88
88
$ cat .git/HEAD
89
89
ref: refs/heads/test
90
90
----
91
91
92
-
When you run `git commit`, it creates the commit object, specifying the parent of that commit object to be whatever SHA-1 value the reference in HEAD points to.
92
+
Όταν εκτελούμε την `git commit`, δημιουργεί το αντικείμενο υποβολής, ορίζοντας τον γονέα του αντικειμένου υποβολής να είναι όποια τιμή SHA-1 δείχνει η αναφορά στον HEAD.
93
93
94
-
You can also manually edit this file, but again a safer command exists to do so: `symbolic-ref`.
95
-
You can read the value of your HEAD via this command:
94
+
Μπορούμε επίσης να επεξεργαστούμε χειροκίνητα αυτό το αρχείο, αλλά και πάλι υπάρχει μια ασφαλέστερη εντολή: `symbolic-ref`.
95
+
Μπορούμε να διαβάσουμε την τιμή του HEAD μας μέσω αυτής της εντολής:
96
96
97
97
[source,console]
98
98
----
99
99
$ git symbolic-ref HEAD
100
100
refs/heads/master
101
101
----
102
102
103
-
You can also set the value of HEAD:
103
+
Μπορούμε επίσης να ορίσουμε την τιμή του HEAD:
104
104
105
105
[source,console]
106
106
----
@@ -109,48 +109,48 @@ $ cat .git/HEAD
109
109
ref: refs/heads/test
110
110
----
111
111
112
-
You can't set a symbolic reference outside of the refs style:
112
+
Δεν μπορούμε να ορίσουμε μια συμβολική αναφορά εκτός του καταλόγου refs:
113
113
114
114
[source,console]
115
115
----
116
116
$ git symbolic-ref HEAD test
117
117
fatal: Refusing to point HEAD outside of refs/
118
118
----
119
119
120
-
==== Tags
120
+
==== Ετικέτες
121
121
122
-
We just finished discussing Git's three main object types, but there is a fourth.
123
-
The tag object is very much like a commit object – it contains a tagger, a date, a message, and a pointer.
124
-
The main difference is that a tag object generally points to a commit rather than a tree.
125
-
It's like a branch reference, but it never moves – it always points to the same commit but gives it a friendlier name.
122
+
Μόλις ολοκληρώσαμε τη συζήτηση για τους τρεις κύριους τύπους αντικειμένων του Git, αλλά υπάρχει ένας τέταρτος.
123
+
Το αντικείμενο ``ετικέτα'' μοιάζει πολύ με ένα αντικείμενο υποβολής --περιέχει μία ταμπέλα, μια ημερομηνία, ένα μήνυμα και έναν δείκτη.
124
+
Η κύρια διαφορά είναι ότι ένα αντικείμενο ετικέτας γενικά οδηγεί σε υποβολή και όχι σε δέντρο.
125
+
Είναι σαν αναφορά κλάδου, αλλά δεν μετακινείται ποτέ --δείχνει πάντοτε την ίδια υποβολή, αλλά δίνει ένα πιο φιλικό όνομα.
126
126
127
-
As discussed in <<_git_basics_chapter>>, there are two types of tags: annotated and lightweight.
128
-
You can make a lightweight tag by running something like this:
127
+
Όπως αναλύθηκε στην ενότητα <<_git_basics_chapter>>, υπάρχουν δύο τύποι ετικετών: επισημειωμένοι (annotated) και ελαφριές (lightweight).
128
+
Μπορούμε να κάνουμε μια ελαφριά ετικέτα τρέχοντας κάτι σαν αυτό:
That is all a lightweight tag is – a reference that never moves.
136
-
An annotated tag is more complex, however.
137
-
If you create an annotated tag, Git creates a tag object and then writes a reference to point to it rather than directly to the commit.
138
-
You can see this by creating an annotated tag (`-a` specifies that it's an annotated tag):
135
+
Μία ελαφριά ετικέτα είναι ακριβώς και μόνον αυτό --μια αναφορά που δεν κινείται ποτέ.
136
+
Ωστόσο, μια επισημειωμένη ετικέτα είναι πιο περίπλοκη.
137
+
Αν δημιουργήσουμε μια επισημειωμένη ετικέτα, το Git δημιουργεί ένα αντικείμενο ετικέτας και στη συνέχεια γράφει μια αναφορά που δείχνει σε αυτήν και όχι απευθείας στην υποβολή.
138
+
Μπορούμε να το δούμε αυτό δημιουργώντας μια επισημειωμένη ετικέτα (η επιλογή `-a` καθορίζει ότι είναι μια ετικέτα σχολιασμένη):
139
139
140
140
[source,console]
141
141
----
142
142
$ git tag -a v1.1 1a410efbd13591db07496601ebc7a059dd55cfe9 -m 'test tag'
143
143
----
144
144
145
-
Here's the object SHA-1 value it created:
145
+
Εδώ είναι το αντικείμενο SHA-1 που δημιούργησε:
146
146
147
147
[source,console]
148
148
----
149
149
$ cat .git/refs/tags/v1.1
150
150
9585191f37f7b0fb9444f35a9bf50de191beadc2
151
151
----
152
152
153
-
Now, run the `cat-file` command on that SHA-1 value:
153
+
Τώρα, ας εκτελέσουμε την εντολή `cat-file` στην τιμή SHA-1:
154
154
155
155
[source,console]
156
156
----
@@ -163,23 +163,23 @@ tagger Scott Chacon <[email protected]> Sat May 23 16:48:58 2009 -0700
163
163
test tag
164
164
----
165
165
166
-
Notice that the object entry points to the commit SHA-1 value that you tagged.
167
-
Also notice that it doesn't need to point to a commit; you can tag any Git object.
168
-
In the Git source code, for example, the maintainer has added their GPG public key as a blob object and then tagged it.
169
-
You can view the public key by running this in a clone of the Git repository:
166
+
Παρατηρούμε ότι το αντικείμενο δείχνει στην τιμή SHA-1 της υποβολής που έχουμε επισημάνει.
167
+
Επίσης παρατηρούμε ότι δεν είναι απαραίτητο να δείχνει σε μια υποβολή· μπορούμε να βάλουμε ετικέτα σε οποιοδήποτε αντικείμενο Git.
168
+
Στον πηγαίο κώδικα Git, για παράδειγμα, ο συντηρητής έχει προσθέσει το δημόσιο κλειδί GPG ως αντικείμενο blob και έπειτα του προσάρτησε μία ετικέτα.
169
+
Μπορούμε να δούμε το δημόσιο κλειδί τρέχοντας αυτό σε έναν κλώνο του αποθετηρίου Git:
170
170
171
171
[source,console]
172
172
----
173
173
$ git cat-file blob junio-gpg-pub
174
174
----
175
175
176
-
The Linux kernel repository also has a non-commit-pointing tag object – the first tag created points to the initial tree of the import of the source code.
176
+
Το αποθετήριο του πυρήνα του Linux διαθέτει επίσης ένα αντικείμενο ετικέτας που δεν δείχνει σε υποβολή --η πρώτη ετικέτα που δημιουργήθηκε δείχνει στο αρχικό δέντρο της εισαγωγής του πηγαίου κώδικα.
177
177
178
-
==== Remotes
178
+
==== Απομακρυσμένες αναφορές
179
179
180
-
The third type of reference that you'll see is a remote reference.
181
-
If you add a remote and push to it, Git stores the value you last pushed to that remote for each branch in the `refs/remotes` directory.
182
-
For instance, you can add a remote called `origin` and push your `master` branch to it:
180
+
Ο τρίτος τύπος αναφοράς που θα δούμε είναι μια απομακρυσμένη αναφορά.
181
+
Εάν προσθέσουμε ένα απομακρυσμένο αποθετήριο και ωθήσουμε σε αυτό, το Git αποθηκεύει την τιμή που ωθήσαμε τελευταία σε αυτό το απομακρυσμένο αποθετήριο για κάθε κλάδο στον κατάλογο `refs/remotes`.
182
+
Για παράδειγμα, μπορούμε να προσθέσουμε ένα απομακρυσμένο αποθετήριο που ονομάζεται `origin` και να ωθήσουμε τον κλάδο μας `master` σε αυτό:
183
183
184
184
[source,console]
185
185
----
@@ -193,14 +193,14 @@ To [email protected]:schacon/simplegit-progit.git
193
193
a11bef0..ca82a6d master -> master
194
194
----
195
195
196
-
Then, you can see what the `master` branch on the `origin` remote was the last time you communicated with the server, by checking the `refs/remotes/origin/master` file:
196
+
Στη συνέχεια, μπορούμε να δούμε πώς ήταν ο κλάδος `master` στο απομακρυσμένο αποθετήριο `origin` την τελευταία φορά που επικοινωνήσαμε με τον διακομιστή, ελέγχοντας το αρχείο `refs/remotes/origin/master`:
197
197
198
198
[source,console]
199
199
----
200
200
$ cat .git/refs/remotes/origin/master
201
201
ca82a6dff817ec66f44342007202690a93763949
202
202
----
203
203
204
-
Remote references differ from branches (`refs/heads` references) mainly in that they're considered read-only.
205
-
You can `git checkout` to one, but Git won't point HEAD at one, so you'll never update it with a `commit` command.
206
-
Git manages them as bookmarks to the last known state of where those branches were on those servers.
204
+
Οι απομακρυσμένες αναφορές διαφέρουν από τους κλάδους (αναφορές `refs/heads`) κυρίως επειδή θεωρούνται μόνο για ανάγνωση.
205
+
Μπορούμε να κάνουμε `git checkout` σε μία απομακρυσμένη αναφορά, αλλά το Git ποτέ δεν θα κάνει τον HEAD σε μία, συνεπώς ποτέ δεν θα την ενημερώσουμε με μια εντολή `commit`.
206
+
Το Git τις διαχειρίζεται ως σελιδοδείκτες στην τελευταία γνωστή κατάσταση στην οποία βρίσκονταν εκείνοι οι κλάδοι σε αυτούς τους διακομιστές.
0 commit comments