image/svg+xml Andreas Hechenberger (Andy) Informatikstudent Freitagsrunde seit 2008EMail: andy@freitagsrunde.org Was ist GIT? https://www.codebasehq.com Git ([ɡɪt], engl. Blödmann) ist eine freie Software zur verteilten Versionsverwaltungvon Dateien, die ursprünglich für die Quellcode-Verwaltung des Linux-Kernels entwickelt wurde. Quelle: Wikipedia GIT-Kommandos git clone ...git add ...git commit ...git pushgit pull Gitlab / Github Service für GITWeboberfläche zur Verwaltung Repositories Benutzer / Mitglieder Beispiel http://railsgirls.com/images/brussels/GitLab.svg http://static.hoa-project.net/Image/Logo/Github.svg Kurz Verzeichnisebene (Working Directory) Stage Lokales Repository Server Repository (Remote) add commit push clone / pull https://tortoisegit.org/about/screenshots/ GUI vs. CLI Fancy Console andy@techtalk:~$ 202244217330290347001737718583208592364211856245903323240632709117499857236972174930038143242524216246115371147218307200262084618915257982823763341485017911236641111618611827329699670231916878731293247182256161997093916546895230977308701426144559639128983276229666976189102269629214252444778143571614015894201244141282569032356221613542826033216953104513236226351482322188208441292523614253222564374425261946247212143693901167139121416815524300533006215725216991012022629124933173328057575820660263341899410527838984143137221314320281136111113005366230573772625099719688936243213642441735281865973752522728779300044952277442529310711156361886029705261642724953522476815796461225904269077617295662471215343218973190824236281412050515886316696396232612412924072049729081301511302270241301931882396264152636493143118393921392624319353121544211182824341191024727384283565620151211147445222151719672865123924224642496421 Lernziele? Warum GIT Wird auch als Stages bezeichnet mehr GIT-Kommandos git statusgit loggit help ... git status Was hat sich lokal verändert Fancy Console andy@techtalk:~$ git statusAuf Branch masterIhr Branch ist auf dem selben Stand wie 'origin/master'.Änderungen, die nicht zum Commit vorgemerkt sind: (benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken) (benutzen Sie "git checkout -- <Datei>...", um die Änderungen im Arbeitsverzeichnis zu verwerfen) geändert: IrgendEinCode.txtUnversionierte Dateien: (benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken) Status.txtkeine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a") git log Zeigt die Kommentare der commits Fancy Console andy@techtalk:~$ git logcommit c446ef49f54e474a5f1c854e83353a93a9729806Author: Andreas Hechenberger <poxy@greenstation.de>Date: Fri Nov 13 00:04:16 2015 +0100 ich habe die Datei IrgendEinCode hinzugefügt git help ... Zeigt die Kommentare der commits Fancy Console andy@techtalk:~$ git help addGIT-ADD(1) Git Manual GIT-ADD(1)NAME git-add - Add file contents to the indexSYNOPSIS git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--] [<pathspec>...]DESCRIPTION This command updates the index using the current content found in the working tree, to Manual page git-add(1) line 1 (press h for help or q to quit) git add git commit git push git pull git clone Zusammenarbeit Zurückgewiesen weil es eine neuere Version gibt Fancy Console andy@techtalk:~$ git pushHost key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwTo git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git ! [rejected] master -> master (fetch first)error: Fehler beim Versenden einiger Referenzen nach 'git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git'Hinweis: Aktualisierungen wurden zurückgewiesen, weil das Remote-Repository Commits enthält,Hinweis: die lokal nicht vorhanden sind. Das wird üblicherweise durch einen "push" vonHinweis: Commits auf dieselbe Referenz von einem anderen Repository aus verursacht.Hinweis: Vielleicht müssen Sie die externen Änderungen zusammenzuführen (z.B. 'git pull ...')Hinweis: bevor Sie erneut "push" ausführen.Hinweis: Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'Hinweis: für weitere Details. Konflikt mit einer Datei Fancy Console andy@techtalk:~$ git pullHost key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwremote: Counting objects: 5, done.remote: Total 3 (delta 0), reused 0 (delta 0)Entpacke Objekte: 100% (3/3), Fertig.Von gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest c446ef4..06bd6f8 master -> origin/masterautomatischer Merge von IrgendEinCode.txtKONFLIKT (Inhalt): Merge-Konflikt in IrgendEinCode.txtAutomatischer Merge fehlgeschlagen; beheben Sie die Konflikte und committen Sie dann das Ergebnis. Konflikt muss manuell behoben werden Fancy Console Das ist ein Text pull problem Fancy Console andy@techtalk:~$ git commit -a -m "konflikt behoben" [master 6e13531] konflikt behobenandy@techtalk:~$ git push Host key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwZähle Objekte: 4, Fertig.Delta compression using up to 4 threads.Komprimiere Objekte: 100% (2/2), Fertig.Schreibe Objekte: 100% (4/4), 432 bytes | 0 bytes/s, Fertig.Total 4 (delta 1), reused 0 (delta 0)To git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git 06bd6f8..6e13531 master -> master andy@techtalk:~$ cat IrgendEinCode.txtDas ist ein Text oder Quellcodepull problem Konflikte Was macht GIT besonders? Versionsverwaltungfreie SoftwareHash pro EintragDezentral Remote A Remote B Remote C Layer 1 Layer 1 Layer 1 Layer 1 Local Gängisten GIT-Kommandos Gitlab / Github git help ... https://git-scm.com/book/de/ http://wiki.freitagsrunde.org/TechTalk Was bedeutet << == >> Fancy Console andy@techtalk:~$ cat IrgendEinCode.txt Das ist ein Text oder Quellcode<<<<<<< HEADpull problem=======status +>>>>>>> 06bd6f821b3e6790279331fab2c111457663e22f Das ist epull prob Person A Das ist estatus + Person B Das ist ein Text <<<<<<< HEADpull problem=======status +>>>>>>> 06bd == << HEAD >> 06bd... Das ist e Remote Person A Das ist epull prob Person B Das ist estatus + pull pull Das ist estatus + add/commit Das ist epull prob add/commit push Das ist estatus + push?? Das ist estatus + master/HEAD aktualisieren vom Server Fancy Console andy@techtalk:~$ git pullHost key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwAlready up-to-date. hinzufügen zur Versionierungmit einem Kommentar Fancy Console andy@techtalk:~$ git commit -a -m "ich habe die Datei IrgendEinCode hinzugefügt"[master (Basis-Commit) c446ef4] ich habe die Datei IrgendEinCode hinzugefügt 1 file changed, 1 insertion(+) create mode 100644 IrgendEinCode.txt hochladen zum Server Fancy Console andy@techtalk:~$ git pushHost key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwZähle Objekte: 3, Fertig.Schreibe Objekte: 100% (3/3), 286 bytes | 0 bytes/s, Fertig.Total 3 (delta 0), reused 0 (delta 0)To git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git * [new branch] master -> master Fancy Console andy@techtalk:~$ git pushHost key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwZähle Objekte: 3, Fertig.Schreibe Objekte: 100% (3/3), 305 bytes | 0 bytes/s, Fertig.Total 3 (delta 0), reused 0 (delta 0)To git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git c446ef4..06bd6f8 master -> master git clone git@server.tld:repository git clone https://server.tld/repository Fancy Console andy@techtalk:~$ git clone git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git Fancy Console andy@techtalk:~$ git clone git@gitlab.tubit.tu-berlin.de:agunschl/GitTechTalkTest.git Klone nach 'GitTechTalkTest' ...Host key fingerprint is SHA256:aA86J3auCo20sHneGIvwxk/uay4ynBNkWIgiio/qUUwwarning: Sie scheinen ein leeres Repository geklont zu haben.Prüfe Konnektivität ... Fertig. Datei anlegen/erstellen Fancy Console andy@techtalk:~$ echo "Das ist ein Text oder Quellcode" >> IrgendEinCode.txtandy@techtalk:~$ cat IrgendEinCode.txtDas ist ein Text oder Quellcode Datei hinzufügen Fancy Console andy@techtalk:~$ git add IrgendEinCode.txt
1
  1. 01 Title
  2. 02 whoami
  3. 03 Was ist Git
  4. 04 Git Besonders
  5. 04.01 Dezentral
  6. 04 Git Besonders
  7. 05 Ziele
  8. 06 Gitkommandos
  9. 07 GUI vs. CLI
  10. 08 Gitkommandos
  11. 09 clone
  12. 09 clone
  13. 09 clone
  14. 09 clone
  15. 10 add
  16. 10 add
  17. 10 add
  18. 10 add
  19. 11 commit
  20. 11 commit
  21. 12 push
  22. 12 push
  23. 12 push
  24. 13 pull
  25. 13 pull
  26. 14 git map
  27. 15 kurz
  28. 16 Konflikt
  29. 16 Konflikt
  30. 16 Konflikt
  31. 16 Konflikt
  32. 16 Konflikt
  33. 17 zusammenarbeit
  34. 18 01 Zusammenarbeit
  35. 19 02 Zusammenarbeit
  36. 20 03 Zusammenarbeit
  37. 20 03 Zusammenarbeit
  38. 20 03 Zusammenarbeit
  39. 20 03 Zusammenarbeit
  40. 20 03 Zusammenarbeit
  41. 21 04 Zusammenarbeit
  42. 22 Ziele
  43. 23 Gitlab/Github
  44. 24 Beispiel
  45. 25 Ziele
  46. 26 more Git
  47. 27 status
  48. 28 log
  49. 29 help
  50. 30 Title
  51. 31 Help