„Heute erzähle ich Ihnen von den beiden beliebtesten Versionskontrollprogrammen: SVN und Git.“

„SVN funktioniert ungefähr so, wie ich es in der letzten Lektion beschrieben habe. Git ist etwas komplizierter und ich habe vor, es ausführlicher zu besprechen.“

„Können Sie mir Links zur Dokumentation für SVN und Git geben?“

„Natürlich, nur eine Sekunde.“

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (das ist einfach ein Meisterwerk)

„Also, Git .“

„Es ist etwas komplizierter als SVN.  Mit Git hat jeder Benutzer zusätzlich zum Server-Repository sein eigenes lokales Repository.

„Wozu verpflichten Sie sich also?“

„Benutzer verpflichten sich immer zu ihrem lokalen Repository.“

„Aber was ist mit dem Server-Repository?“

„Um die lokalen und Server-Repositorys zu synchronisieren, gibt es spezielle Pull- und Push-Befehle .

„Dafür gibt es einen Grund. Manchmal muss ein Programmierer selbst viel Arbeit leisten, was mehrere Hundert Commits umfassen kann, bevor es dem gemeinsam genutzten Repository hinzugefügt werden kann.“

„Um dies in SVN zu tun, müssten Sie einen separaten Zweig starten und ihn dann mit dem Stamm zusammenführen.“

„Mit Git übermitteln Sie einfach immer das lokale Repository und senden dann alle Änderungen als Stapel an das zentrale Repository auf dem Server, wenn Sie fertig sind.“

„Diese Methode mag etwas übertrieben erscheinen, wenn Sie nur wenig Code schreiben. Aber wenn Ihre Aufgaben so groß sind, dass sie sich über Wochen erstrecken, dann verstehen Sie, dass Sie nicht die ganze Zeit schreiben können, ohne sich zu verpflichten.“

„Warum können Sie nicht einfach zwei Wochen lang arbeiten und Ihre Änderungen dann einmal auf den Server übertragen?“

„Nun, ein Versionskontrollprogramm bietet viele Annehmlichkeiten.“

„Stellen Sie sich vor, Sie verpflichten sich jeden Tag und stellen am 10. Tag fest, dass die Änderungen, die Sie in den letzten zwei Tagen vorgenommen haben, nicht wie geplant funktionieren. Und Sie möchten zu dem Code zurückkehren, den Sie am 8. Tag hatten, und die Aufgabe angehen.“ anders."

„Sie machen einfach die in den letzten zwei Tagen am lokalen Repository vorgenommenen Änderungen rückgängig und kehren zum gewünschten Zustand zurück. Dies wird als Rollback- Vorgang bezeichnet.“

„Willst du mir sagen, dass du das schaffst?“

„Ja. Da der Commit-Verlauf gespeichert wird, können Sie außerdem herausfinden, wann und warum etwas festgeschrieben wurde und von wem, welche relevanten Funktionen/Fehler es gibt und welche zehn Dateien im Rahmen dieser Arbeit gleichzeitig geändert wurden.“

„Angenommen, jemandes Bugfix zerstört den Code eines anderen. Sie können den Code einfach zurücksetzen ( Rollback ) und fortfahren, als ob die Änderung nie stattgefunden hätte.“

„OK, das ist cool. Ich bin überzeugt. Könnten Sie mir ein paar Beispiele zeigen, die veranschaulichen, wie das alles funktioniert?“

"Sicher."

„So klonen Sie das zentrale Repository auf Ihren lokalen Computer:“

Commits und Branches – 1

„Der Checkout-Vorgang ist also nicht mehr erforderlich.“

„Ja. Und hier sind Beispiele für Push- Operationen:“

Commits und Branches – 2

„Und Pull- Operationen:

Commits und Branches – 3

„Ah. Das macht mehr oder weniger Sinn.“

„Übrigens gibt es einen coolen Dienst namens GitHub.“

„Jeder Programmierer kann sich dort registrieren und seine eigenen Git-Repositories erstellen. Ich empfehle Ihnen, sich damit vertrauter zu machen.“

„Hier ein paar nützliche Links:“

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

„Beachten Sie, dass es eine ganze Reihe Git-Clients gibt.“

„Zuerst gibt es   GitBash , mit dem Sie Textbefehle eingeben können.“

„Dann gibt es noch TortoiseGit , ein gutes, in den Windows Explorer integriertes Programm. Damit können Sie direkt im Explorer mit Dateien in einem Git-Repository arbeiten.“

„IntelliJ IDEA unterstützt Git und ermöglicht es Ihnen, alle möglichen komplexen Befehle mit nur wenigen Klicks direkt aus der Umgebung auszuführen.“

„Also, welches soll ich lernen?“

„Ich empfehle Ihnen, sie alle kennenzulernen.“

„Sie bestehen Ihr Vorstellungsgespräch und kommen zur Arbeit. Sie erhalten einen Link zu Git, einen Login und ein Passwort – und das war's. Dann sind Sie auf sich allein gestellt.“

„Was meinst du mit „auf eigene Faust“?“

„Ich meine, Sie richten Git selbst ein, ziehen selbst eine Kopie des Repositorys, …“

„Und dann müssen Sie das Projekt erstellen und versuchen, es auszuführen.“

„Die Build-Anweisungen werden sich höchstwahrscheinlich zusammen mit der Projektdokumentation auch im Git-Repository befinden.“

„Ihr Teamleiter wird am Abend auf Sie zukommen und sagen:  „Na, was haben Sie bisher herausgefunden?“ "

„Und du wirst sagen: ‚Ich versuche, Git hier einzurichten, hatte aber noch keinen Erfolg. „Du wirst mich doch nicht feuern, oder?“ "

„Oder Sie können, während es noch Mittag ist, zum Teamleiter gehen und sagen:  „Ich habe Git installiert, das Projekt abgerufen und die Dokumentation durchgesehen, aber es sind Hunderte von Dateien und ich habe noch nicht alles geklärt. Wo.“ sind die aktuellen Bauanweisungen?'» "

„Können Sie den Unterschied spüren?“

„Ja. Im zweiten Fall bin ich ein Super-Rockstar-Programmierer, aber im ersten Fall bin ich ein Robo-Doofus, der nicht einmal weiß, wie man ein Projekt aus Git zieht. Mit anderen Worten, ich habe es vermasselt.“ bevor ich überhaupt mit dem Programmieren anfangen konnte. Ich nehme an, dass sie mich danach nicht einmal mehr Code schreiben ließen.“

„Sehen Sie, Sie haben Ihre eigenen Fragen beantwortet. Also studieren Sie und finden Sie es heraus. Niemand wird es für Sie tun.“

„Du wirst mir nicht helfen?“

„Ich habe schon geholfen. Wir unterrichten hier Java, falls du es vergessen hast. Für alles andere bist du auf dich allein gestellt. Oder ist dein Kopf nur zum Trinken da?“

„Okay, ich verstehe. Danke, Bilaabo!“