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.