Großes Beispiel mit Git und GitHub

Dieses Beispiel gehört zum Beitrag Git mit GitHub und liefert ein Beispiel für das parallele Arbeiten mit Branches unter Git. Dieses Beispiel verwendet mein öffentlichen Repository git_test bei GitHub.

Zurück zum Haupt-Beitrag Git mit GitHub

1. Vorbereiten des Branches master

 
$ git branch
  features-1
* master
$ vi master.txt 
$ git add master.txt
$ git commit -m "Multibranch Test Vorbereitung"
[master 7ec87e3] Multibranch Test Vorbereitung
 1 file changed, 4 insertions(+)
$

2. Erstellung einer Version v3.0.0

$ git tag v3.0.0
$ 
$ git status 
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
$

3. Erzeugen des Branches features-2

$ git branch features-2
$

4. Änderung auf dem Branch master

 
$ vi master.txt 
$ git add master.txt
$ git commit -m "Änderung auf dem Branch master"
[master a9ee538] Änderung auf dem Branch master
 1 file changed, 1 insertion(+)
$ 
$ git status 
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)
$

5. Wechsel zum Branch features-1

$ git checkout features-1
Switched to branch 'features-1'
$ ls -l
insgesamt 12
-rw-rw-r-- 1 frank frank  70 Sep 15 17:08 COPYRIGHT.md
-rw-rw-r-- 1 frank frank  13 Sep 15 19:43 features-1.txt
-rw-rw-r-- 1 frank frank 960 Sep 15 18:33 README.md
$

6. Änderungen durchführen

 
$ vi features-1.txt 
$ git add features-1.txt
$ git commit -m "Änderung auf dem Branch features-1"
[features-1 1475192] Änderung auf dem Branch features-1
 1 file changed, 1 insertion(+)
$

7. Wechsel zum Branch features-2

$ git checkout features-2
Switched to branch 'features-2'
$

8. Änderungen durchführen

 
$ echo "Features 2" > features-2.txt 
$ git add features-2.txt
$ vi master.txt 
$ git add master.txt
$ git commit -m "Änderung auf dem Branch features-2"
[features-2 9566b8c] Änderung auf dem Branch features-2
 2 files changed, 2 insertions(+)
 create mode 100644 features-2.txt
$ 
$ git status 
# On branch features-2
nothing to commit (working directory clean)
$ ls -l
insgesamt 20
-rw-rw-r-- 1 frank frank  70 Sep 15 17:08 COPYRIGHT.md
-rw-rw-r-- 1 frank frank  13 Sep 15 21:10 features-1.txt
-rw-rw-r-- 1 frank frank  11 Sep 15 21:11 features-2.txt
-rw-rw-r-- 1 frank frank  71 Sep 15 21:11 master.txt
-rw-rw-r-- 1 frank frank 960 Sep 15 18:33 README.md
$

9. Erzeugen und Wechseln zum Branch features-3

$ git branch features-3
$ git checkout features-3
Switched to branch 'features-3'
$

10. Änderungen durchführen

 
$ echo "Features 3" > features-3.txt 
$ vi master.txt 
$ git add --all
$ git commit -m "Änderung auf dem Branch features-3"
[features-3 c9e7376] Änderung auf dem Branch features-3
 2 files changed, 2 insertions(+)
 create mode 100644 features-3.txt
$

11. Alle Änderungen ins öffentliche Repository stellen

$ git push
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 13, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 845 bytes, done.
Total 9 (delta 3), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
   4dcb955..1475192  features-1 -> features-1
   03cd179..a9ee538  master -> master
$ git push origin features-2 features-3
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 10, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (8/8), 796 bytes, done.
Total 8 (delta 2), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
 * [new branch]      features-2 -> features-2
 * [new branch]      features-3 -> features-3
$

Die beiden Branches features-2 und features-3 werden das erste Mal hochgeladen.

12. Nochmals den Branch features-2 ändern und hochladen

 
$ git checkout features-2
Switched to branch 'features-2'
$ vi master.txt 
$ git add master.txt
$ git commit -m "Änderung auf dem Branch features-2 (2)"
[features-2 9b8df6e] Änderung auf dem Branch features-2 (2)
 1 file changed, 1 insertion(+)
$ git push
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 334 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
   9566b8c..9b8df6e  features-2 -> features-2
$

13. Letztmalig den Branch master ändern und hochladen

 
$ git checkout master 
Switched to branch 'master'
$ vi master.txt 
$ git add master.txt
$ git commit -m "Änderung auf dem Branch master (2)"
[master 8596f32] Änderung auf dem Branch master (2)
 1 file changed, 1 insertion(+)
$ git push
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 328 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
   a9ee538..8596f32  master -> master
$

Im folgendem Bild wird der Graph der Branches auf GitHub vor dem Merge gezeigt.

Der Branch Graph vor dem Merge

Der Branch Graph vor dem Merge (© Frank Rahn)

14. Merge des Branch features-1 in den Branch master

 
$ git merge features-1
Merge made by the 'recursive' strategy.
 features-1.txt |    1 +
 1 file changed, 1 insertion(+)
$ git status 
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)
$ git push
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 303 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
   8596f32..4abfd71  master -> master
$

Im folgendem Bild wird der Graph der Branches auf GitHub nach dem Merge von Branch features-1 gezeigt.

Der Branch Graph nach dem Merge von features-1

Der Branch Graph nach dem Merge von features-1 (© Frank Rahn)

15. Merge des Branch features-2 in den Branch master

 
$ git merge features-2
Auto-merging master.txt
Merge made by the 'recursive' strategy.
 features-2.txt |    1 +
 master.txt     |    2 ++
 2 files changed, 3 insertions(+)
 create mode 100644 features-2.txt
$ git push
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 387 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
   4abfd71..050023b  master -> master
$

Im folgendem Bild wird der Graph der Branches auf GitHub nach dem Merge von Branch features-2 gezeigt.

Der Branch Graph nach dem Merge von features-2

Der Branch Graph nach dem Merge von features-2 (© Frank Rahn)

16. Merge des Branch features-3 in den Branch master

 
$ git merge features-3
Auto-merging master.txt
Merge made by the 'recursive' strategy.
 features-3.txt |    1 +
 master.txt     |    1 +
 2 files changed, 2 insertions(+)
 create mode 100644 features-3.txt
$ git push
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 376 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
   050023b..ae20eaf  master -> master
$

Im folgendem Bild wird der Graph der Branches auf GitHub nach dem Merge von Branch features-3 gezeigt.

Der Branch Graph nach dem Merge von features-3

Der Branch Graph nach dem Merge von features-3 (© Frank Rahn)

17. Die graphische Darstellung mit git log

$ git log --pretty=oneline --graph
*   ae20eafeb68aa87ad8c25a49b4b6eca8d30902e4 Merge branch 'features-3'
|  
| * c9e737624aa4805b4a7a565683082f83f894aac1 Änderung auf dem Branch features-3
* |   050023bd4de7f1ae09cc56eb4f29bda20a511503 Merge branch 'features-2'
|   
| * | 9b8df6e434fb06ddae6feda4ba6e0ec4da3bceb2 Änderung auf dem Branch features-2 (2)
| |/  
| * 9566b8c1664d46cf1a44d7230e691f99771ccda2 Änderung auf dem Branch features-2
* |   4abfd7107531d82c7a4ded8960879175a579a728 Merge branch 'features-1'
|   
| * | 1475192079aba54f7d72fba38c58183d3265fc54 Änderung auf dem Branch features-1
* | | 8596f32a8b917df217c9f4ea07d0a7fccbe68512 Änderung auf dem Branch master (2)
* | | a9ee53815d71b69e9676981b75cf1be05900c439 Änderung auf dem Branch master
| |/  
|/|   
* | 7ec87e3b7577cb0432804109c80239aa7f421b4d Multibranch Test Vorbereitung
* | 03cd1798363337086d7109b8533d2802fa4e93ca Letzte Änderung übernehmen
|/  
* 4dcb955b2a95f32e31e6181b6359ee3f269b61eb Weitere Änderung
* 71032f2bb043d28d0d5d922b1fc750c207099980 Kleinere Änderung
* f4c448093477c211bf3a25b39b4e433c527c686a Implementierung Features 1
* ea3cfb90b1aa03e108b7724220647174a7522388 Doppelte Einrückung erstellt
* 7607fcfc7591cc2b7553e77eb0def0f20965643b Markdown erweitert
* f89b24b5cd8b39d9671a8eebdef10b3aebb752e8 Copyzeichen richtig gesetzt
* 8f30b7cab9240af34ae113c50f21044ebf4e293a Datei umbenannt
* 5de03832c99aca74a36aeb2e74efb2a9e17e741f Copyright hinzugefüht
* 834c378eb1cd14e97baf6b02a48b56961bcb8f70 Die Datei doch wieder löschen
* e4237249b3a5a72e28567cb633659aca0105ad84 Eine Datei hinzufügen
* 4977b6ee26ac2c001af8699d3d45437fe9030721 Korrektur
* 205e659fb0edb001c191bc7417c61b02b83c9375 Erste Erweiterungen
* 7b69e85046057eac684292957f0c2e283b7aa483 Erstellung
$

18. Zum Abschluss wird noch eine Version erstellen …

$ git tag v4.0.0
$

19. … und die Versionen hochladen

$ git push --tags 
Enter passphrase for key '/home/frank/.ssh/id_rsa': 
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:frank-rahn/git_test.git
 * [new tag]         v3.0.0 -> v3.0.0
 * [new tag]         v4.0.0 -> v4.0.0
$

Zurück zum Haupt-Beitrag Git mit GitHub

Frank Rahn
Letzte Artikel von Frank Rahn (Alle anzeigen)
1 Kommentar

Trackbacks & Pingbacks

  1. […] größeres Beispiel zum parallelen Arbeiten mit Entwicklungzweigen ist im Beitrag Großes Beispiel mit Git und GitHub zu […]

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

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

Ihre E-Mail-Adresse wird nicht veröffentlicht. Ihr Kommentar wird verschlüsselt an meinen Server gesendet. Erforderliche Felder sind mit * markiert.

Weitere Informationen und Widerrufshinweise finden Sie in meiner Datenschutzerklärung.