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
1. Vorbereiten des Branches master
1 2 3 4 5 6 7 8 |
$ 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
1 2 3 4 5 6 7 |
$ 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
1 |
$ git branch features-2 |
4. Änderung auf dem Branch master
1 2 3 4 5 6 7 8 9 10 11 |
$ 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
1 2 3 4 5 6 7 |
$ 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
1 2 3 4 5 |
$ 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
1 2 |
$ git checkout features-2 Switched to branch 'features-2' |
8. Änderungen durchführen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ 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
1 2 3 |
$ git branch features-3 $ git checkout features-3 Switched to branch 'features-3' |
10. Änderungen durchführen
1 2 3 4 5 6 7 |
$ 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ 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 (© Frank Rahn)
14. Merge des Branch features-1 in den Branch master
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ 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 (© Frank Rahn)
15. Merge des Branch features-2 in den Branch master
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ 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 (© Frank Rahn)
16. Merge des Branch features-3 in den Branch master
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ 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 (© Frank Rahn)
17. Die graphische Darstellung mit git log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$ 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 …
1 |
$ git tag v4.0.0 |
19. … und die Versionen hochladen
1 2 3 4 5 6 |
$ 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 |
Frank Rahn
Benötigen Sie Unterstützung? Kontaktieren Sie ihn.
Hat Ihnen dieser Beitrag gefallen? Wir würden uns über Ihren Kommentar freuen! Bitte verwenden Sie Ihren bürgerlichen Namen und eine E-Mail-Adresse mit Gravatar.
Letzte Artikel von Frank Rahn (Alle anzeigen)
- Spring Boot Webanwendung: Die ersten Schritte (Tutorial) - Montag, 28. März 2016
- Wer ist der optimale Java Bean Mapper? - Sonntag, 19. Juli 2015
- Mainframe-Zugriff via Java - Sonntag, 04. Mai 2014
Dein Kommentar
An Diskussion beteiligen?Hinterlasse uns Deinen Kommentar!