Git - Operation erstellen
In diesem Kapitel erfahren Sie, wie Sie ein Remote-Git-Repository erstellen. Von nun an werden wir es als Git Server bezeichnen. Wir benötigen einen Git-Server, um die Zusammenarbeit im Team zu ermöglichen.
Neuen Benutzer erstellen
# add new group
[root@CentOS ~]# groupadd dev
# add new user
[root@CentOS ~]# useradd -G devs -d /home/gituser -m -s /bin/bash gituser
# change password
[root@CentOS ~]# passwd gituser
Der obige Befehl führt zu folgendem Ergebnis.
Changing password for user gituser.
New password:
Retype new password:
passwd: all authentication token updated successfully.
Erstellen Sie ein nacktes Repository
Lassen Sie uns ein neues Repository mithilfe von initialisieren init Befehl gefolgt von --bareMöglichkeit. Es initialisiert das Repository ohne Arbeitsverzeichnis. Konventionell muss das nackte Repository als benannt werden.git.
[gituser@CentOS ~]$ pwd
/home/gituser
[gituser@CentOS ~]$ mkdir project.git
[gituser@CentOS ~]$ cd project.git/
[gituser@CentOS project.git]$ ls
[gituser@CentOS project.git]$ git --bare init
Initialized empty Git repository in /home/gituser-m/project.git/
[gituser@CentOS project.git]$ ls
branches config description HEAD hooks info objects refs
Generieren Sie ein öffentliches / privates RSA-Schlüsselpaar
Lassen Sie uns durch den Prozess der Konfiguration eines Git-Servers gehen. ssh-keygen Das Dienstprogramm generiert ein öffentliches / privates RSA-Schlüsselpaar, das wir für die Benutzerauthentifizierung verwenden.
Öffnen Sie ein Terminal, geben Sie den folgenden Befehl ein und drücken Sie für jeden Eingang die Eingabetaste. Nach erfolgreichem Abschluss wird ein erstellt.ssh Verzeichnis innerhalb des Home-Verzeichnisses.
tom@CentOS ~]$ pwd
/home/tom
[tom@CentOS ~]$ ssh-keygen
Der obige Befehl führt zu folgendem Ergebnis.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tom/.ssh/id_rsa): Press Enter Only
Created directory '/home/tom/.ssh'.
Enter passphrase (empty for no passphrase): ---------------> Press Enter Only
Enter same passphrase again: ------------------------------> Press Enter Only
Your identification has been saved in /home/tom/.ssh/id_rsa.
Your public key has been saved in /home/tom/.ssh/id_rsa.pub.
The key fingerprint is:
df:93:8c:a1:b8:b7:67:69:3a:1f:65:e8:0e:e9:25:a1 tom@CentOS
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
|
.
|
| Soo |
| o*B. |
| E = *.= |
| oo==. . |
| ..+Oo
|
+-----------------+
ssh-keygen hat zwei Schlüssel generiert, der erste ist privat (dh id_rsa) und der zweite ist öffentlich (dh id_rsa.pub).
Note: Teilen Sie niemals Ihren PRIVATEN SCHLÜSSEL mit anderen.
Hinzufügen von Schlüsseln zu autorisierten Schlüsseln
Angenommen, zwei Entwickler arbeiten an einem Projekt, nämlich Tom und Jerry. Beide Benutzer haben öffentliche Schlüssel generiert. Lassen Sie uns sehen, wie diese Schlüssel zur Authentifizierung verwendet werden.
Tom fügte seinen öffentlichen Schlüssel mithilfe von dem Server hinzu ssh-copy-id Befehl wie unten angegeben -
[tom@CentOS ~]$ pwd
/home/tom
[tom@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Der obige Befehl führt zu folgendem Ergebnis.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
In ähnlicher Weise fügte Jerry seinen öffentlichen Schlüssel mit dem Befehl ssh-copy-id zum Server hinzu.
[jerry@CentOS ~]$ pwd
/home/jerry
[jerry@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
Der obige Befehl führt zu folgendem Ergebnis.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Änderungen in das Repository übertragen
Wir haben ein nacktes Repository auf dem Server erstellt und zwei Benutzern Zugriff gewährt. Von nun an können Tom und Jerry ihre Änderungen in das Repository übertragen, indem sie es als Remote hinzufügen.
Git init Befehl erstellt .git Verzeichnis zum Speichern von Metadaten über das Repository bei jedem Lesen der Konfiguration aus dem .git/config Datei.
Tom erstellt ein neues Verzeichnis, fügt eine README-Datei hinzu und schreibt seine Änderung als erstes Commit fest. Nach dem Festschreiben überprüft er die Festschreibungsnachricht, indem er das ausführtgit log Befehl.
[tom@CentOS ~]$ pwd
/home/tom
[tom@CentOS ~]$ mkdir tom_repo
[tom@CentOS ~]$ cd tom_repo/
[tom@CentOS tom_repo]$ git init
Initialized empty Git repository in /home/tom/tom_repo/.git/
[tom@CentOS tom_repo]$ echo 'TODO: Add contents for README' > README
[tom@CentOS tom_repo]$ git status -s
?? README
[tom@CentOS tom_repo]$ git add .
[tom@CentOS tom_repo]$ git status -s
A README
[tom@CentOS tom_repo]$ git commit -m 'Initial commit'
Der obige Befehl führt zu folgendem Ergebnis.
[master (root-commit) 19ae206] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
Tom überprüft die Protokollnachricht, indem er den Befehl git log ausführt.
[tom@CentOS tom_repo]$ git log
Der obige Befehl führt zu folgendem Ergebnis.
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Tom hat seine Änderungen in das lokale Repository übernommen. Jetzt ist es Zeit, die Änderungen in das Remote-Repository zu übertragen. Zuvor müssen wir das Repository jedoch als Remote hinzufügen. Dies ist eine einmalige Operation. Danach kann er die Änderungen sicher in das Remote-Repository übertragen.
Note- Standardmäßig pusht Git nur auf übereinstimmende Zweige: Für jeden Zweig, der auf der lokalen Seite vorhanden ist, wird die entfernte Seite aktualisiert, wenn dort bereits ein Zweig mit demselben Namen vorhanden ist. In unseren Tutorials werden jedes Mal Änderungen an derorigin master Zweigstelle, verwenden Sie den entsprechenden Zweigstellennamen entsprechend Ihrer Anforderung.
[tom@CentOS tom_repo]$ git remote add origin [email protected]:project.git
[tom@CentOS tom_repo]$ git push origin master
Der obige Befehl führt zu folgendem Ergebnis.
Counting objects: 3, done.
Writing objects: 100% (3/3), 242 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:project.git
* [new branch]
master −> master
Jetzt werden die Änderungen erfolgreich in das Remote-Repository übernommen.