So richten Sie Git für die Versionskontrolle ein und verwenden es

Dieser Beitrag beschreibt, wie man ein Git-Repository einrichtet und zeigt die grundlegenden Befehle für die tägliche Arbeit. Der Beitrag wird im Laufe der Zeit um zusätzliche Befehle und Tricks erweitert.

Bitte beachten, dass in dem Beitrag nicht beschrieben wird, wie ein Remote-Git-Server eingerichtet wird. Wie das geht, kann man zum Beispiel hier nachschauen: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server.

Setting up a bare git repository

To create a blank repository you just create a new folder for your project and run "git init --bare" for the git initialisation:

git@server:~/repos $ mkdir testproject.git
git@server:~/repos $ cd testproject.git/
git@server:~/repos/testproject.git $ git init --bare
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
Initialized empty Git repository in /path/to/repos/testproject.git/
git@server:~/repos/testproject.git $ 

Ich habe dies auf meinem zentralen Git-Server ausgeführt, um zusätzliche Vorgänge zu zeigen. Man kann das auch einfach lokal ausführen.

Cloning git repository

Um das Repository auf einen anderen Computer zu klonen, können Sie einfach den folgenden Befehl ausführen.

user1@client:~/projects$ git clone gitserver:/path/to/repos/testproject.git
Clone into 'testproject' …
warning: You appear to have cloned an empty repository.
user1@client:~/projects$

Bitte beachten Sie, dass Gitserver hier auf eine SSH-Konfiguration verweist.

Erste Änderung, Commit und Push

I add a simple text file to my local repository. With git add I will add it under version control and will commit with the message "First commit".

user1@client:~/projects/testproject$ echo "test" >> file.txt
user1@client:~/projects/testproject$ ls
file.txt
user1@client:~/projects/testproject$ tail file.txt 
test
user1@client:~/projects/testproject$ git add .
user1@client:~/projects/testproject$ git commit -m "First commit"
[master (Root-Commit) ecbe223] First commit
 1 file changed, 1 insertion(+)
 create mode 100644 file.txt
user1@client:~/projects/testproject$ 

Die Änderung wird jetzt einfach in meinem lokalen Repository festgeschrieben. Das folgende Programm zeigt schematisch wie es funktioniert.

Wir haben ein neues Repository auf dem Git-Server (Remote) erstellt und es auf den Client geklont. Anschließend haben wir eine Änderung vorgenommen und diese übernommen. Um die Änderung über unseren Git-Server für andere verfügbar zu machen, müssen wir sie zurückschieben.

user1@client:~/projects/testproject$ git push origin
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 225 Bytes | 225.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), Pack reused 0
To gitserver:/path/to/repos/testproject.git
 * [new branch]      master -> master
user1@client:~/projects/testproject$

Create and work on a git branch

The branch we used so far is the master branch which usually acts as the central collection of changes in a git repository. To isolate changes (e.g. from affecting others when trying something out) you can create separate branches. To create a branch called "feature1" run

user1@client:~/projects/testproject$ git branch feature1
user1@client:~/projects/testproject$ git branch --list
  feature1
* master
user1@client:~/projects/testproject$

Der neue Branch wurde erstellt, aber wir arbeiten noch am master branch(gekennzeichnet mit *). Um zum Zweig „feature1“ zu wechseln, müssen wir den Zweig auschecken.

user1@client~/projects/testproject$ git checkout feature1
Switched to branch 'feature1'

Ich erstelle jetzt eine weitere Datei namens feature1.txt und committe sie in den neuen Branch.

user1@client:~/projects/testproject$ echo "feature1" >> feature1.txt
user1@client:~/projects/testproject$ git add .
user1@client:~/projects/testproject$ git commit -m "Adding Feature1"
[feature1 22f1a8a] Adding Feature1
 1 file changed, 1 insertion(+)
 create mode 100644 feature1.txt
user1@client:~/projects/testproject$ 

Der Feature1-Branch enthält jetzt zwei Commits:

user1@client:~/projects/testproject$ git log
commit 22f1a8ab8cbc858571429265f50e58bbfbbc736d (HEAD -> feature1)
Author: Benni <b@wdev.ch>
Date:   Wed Apr 5 21:23:33 2023 +0200
    Adding Feature1
commit ecbe2232341d8a612afefdaf8f7150dcf16c506b (origin/master, master)
Author: Benni <b@wdev.ch>
Date:   Wed Apr 5 21:00:14 2023 +0200
    First commit
user1@client:~/projects/testproject$ 

The master branch is not affected by this change, see here.

user1@client:~/projects/testproject$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
user1@client:~/projects/testproject$ git log
commit ecbe2232341d8a612afefdaf8f7150dcf16c506b (HEAD -> master, origin/master)
Author: Benni <b@wdev.ch>
Date:   Wed Apr 5 21:00:14 2023 +0200
    First commit
user1@client:~/projects/testproject$ 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert