Forum: PC Hard- und Software git Generelle Frage


von Esmu P. (Firma: privat) (max707)


Lesenswert?

Was ist das? Und wie benutzt man es?

von Achim M. (minifloat)


Lesenswert?

Esmu P. schrieb:
> Was ist das?

Ein SCM. Eine dezentrale Vereinsverwaltung.

Esmu P. schrieb:
> Und wie benutzt man es?

git init

git status

git add ...

git commit -m "mein erster commit"

git branch

git clone [url]

usw...

mfg mf

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Versionskontrollsystem. Das wichtigste Werkzeug zum Programmieren, 
sollte man vor der Programmiersprache selber lernen.

von Roland E. (roland0815)


Lesenswert?

Gibts das auch lokal oder nur in der Wolke?

von Jörg R. (solar77)


Lesenswert?

Esmu P. schrieb:
> Was ist das? Und wie benutzt man es?

Nur im dunklen und ohne Zucker.

Diese dahingerotzten Threads werden langsam zur Pest;-(

Am besten über /dev null ins Delete verschieben.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Wie so oft, gilt fuer git insbesondere: RTFM!
Hier werden sie geholfen:
https://git-man-page-generator.lokaltog.net/

scnr,
WK

von Daniel A. (daniel-a)


Lesenswert?


von J. S. (jojos)


Angehängte Dateien:

Lesenswert?

Roland E. schrieb:
> Gibts das auch lokal oder nur in der Wolke?

git ist erstmal nur lokal. Es wird immer gern mit github durcheinander 
geworfen.
Mit git erzeugt man aus einem 'dummen' Arbeitsverzeichnis ein 
Repository, da stecken dann zusätzlich die Verwaltungsdaten und die 
ganze Historie mit drin. Bei git ist es Prinzip, es ist ein dezentrales 
System und jede Arbeitskopie enthält für sich die gesamte Historie (kann 
aber auch gestrippt werden).
github ist einer von vielen möglichen remotes, hier ist es ein 
öffentlicher Server über den git mit seinem eigenen Protokoll die Repos 
synchronisieren kann. Ein remote kann im einfachen Fall aber auch ein 
anderes Verzeichnis auf dem gleichen oder einem anderen Rechner sein, 
oder man kann z.B. gitlab als Community Edition selber hosten oder mit 
gitea gibt es eine weitere, sparsamere Server Möglichkeit.

: Bearbeitet durch User
von Frank K. (frank)


Lesenswert?

Hier gibt es eine detaillierte :-) Zusammenfassung: 
https://git-scm.com/book/de/v2

von Roland E. (roland0815)


Lesenswert?

J. S. schrieb:
> Roland E. schrieb:
>> Gibts das auch lokal oder nur in der Wolke?
>
> git ist erstmal nur lokal. Es wird immer gern mit github durcheinander
> geworfen.
> Mit git erzeugt man aus einem 'dummen' Arbeitsverzeichnis ein
> Repository, ...

OK. Wie SVN nur in bunt...

Wenns weiter nix ist...

von Flöte (nsolo)


Lesenswert?

Roland E. schrieb:
> OK. Wie SVN nur in bunt...
>
> Wenns weiter nix ist...

Ne, das kann man nur im entferntesten Vergleichen im Hinblick auf 
Versionierung.

von Norbert (der_norbert)


Lesenswert?

Frank K. schrieb:
> Hier gibt es eine detaillierte :-) Zusammenfassung:
> https://git-scm.com/book/de/v2

Na Klasse. Jetzt hab' ich wieder 14MB weniger auf meinem Tolino.

<Thumbs up>

von Kolja L. (kolja82)


Lesenswert?

Esmu P. schrieb:
> Was ist das? Und wie benutzt man es?

Je nach Vorbildung / Erfahrung ist git unterschiedlich schwer zu 
verstehen. Ich selbst nutze es nur rudimentär, vor allem als externes 
backup auf github.

Im Grunde genommen ist es dafür da, die Änderungen in einem Projekt zu 
dokumentieren.
Ich glaube in Word gibt es es, rudimentär, etwas vergleichbares.

Der wirklich große Vorteil von git  kommt aber dann zum tragen, wenn 
mehrere Menschen an einem Projekt zusammen arbeiten.
Dann nimmt einfach jeder sich den aktuellen Stand des Projektes (main 
branch) und entwickelt darauf sein neues Feature (feature branch).
Wenn es fertig ist, gibt man es zur Vereinigung (merge) frei. Diese 
Anfrage kann von dem Team eingesehen, kommentiert und oder geändert 
werden.
Wenn keiner etwas einzuwenden hat, wird der eigene Code dem Projekt 
(main branch) hinzugefügt.

von J. S. (jojos)


Lesenswert?

Ich halte es auch für einen 1 Personen Haushalt für sehr sinnvoll.
Du entwickelst etwas alleine linear vor dich hin. Eine Tasterabfrage, 
funktioniert, commit. Displayausgabe, funktioniert, commit. usw. Und 
wenn etwas nicht mehr funktioniert kannst du genau die Änderungen 
zurückverfolgen und gucken wo das passiert sein muss. Mag da trivial 
sein, aber daran kann man üben. Wenn man dann komplexen fremden Code 
bekommt, dann ist das die wahre Wonne wenn man sowas hat.

von Roland E. (roland0815)


Lesenswert?

Flöte schrieb:
> Roland E. schrieb:
>> OK. Wie SVN nur in bunt...
>>
>> Wenns weiter nix ist...
>
> Ne, das kann man nur im entferntesten Vergleichen im Hinblick auf
> Versionierung.

Kannst du das mal näher erläutern?

von Stefan F. (Gast)


Lesenswert?

Esmu P. schrieb:
> Was ist das? Und wie benutzt man es?

http://stefanfrings.de/git/index.html

von Stefan F. (Gast)


Lesenswert?

Roland E. schrieb:
> Gibts das auch lokal oder nur in der Wolke?

Ja, siehe http://stefanfrings.de/git/index.html

von Esmu P. (Firma: privat) (max707)


Lesenswert?

Frank K. schrieb:
> Hier gibt es eine detaillierte :-) Zusammenfassung:
> https://git-scm.com/book/de/v2

Sehr schön! Eine sehr gute, finde ich, Zusammenfassung.

Ich hatte noch nie damit zu tun und habe auch keinerlei Ahnung über 
Github.

Das kann ja sein, aber wie einer hier oben, nicht du :-), herum stänkert
das geht gar nicht.

Ich bin bei einer Kompilierung einer Software darüber gestolpert. Daher 
meine Frage. Sollte doch erlaubt sein finde ich.
Vielen Dank nochmals. :-)

von Stefan F. (Gast)


Lesenswert?

Roland E. schrieb:
> OK. Wie SVN nur in bunt...
> Wenns weiter nix ist...

Eben nicht. Git kommt im Gegensatz zu SVN ohne (zentrales) Repository 
aus. Danach hattest du doch gefragt.

von Esmu P. (Firma: privat) (max707)


Lesenswert?

Stefan F. schrieb:
> Esmu P. schrieb:
>> Was ist das? Und wie benutzt man es?
>
> http://stefanfrings.de/git/index.html

Wer hat deinen Beitrag mit -1 bewertet? Ein angemeldeter Stammposter?
Der soll sich schämen.

von Hans H. (loetkolben)


Lesenswert?

Frank K. schrieb:
> Hier gibt es eine detaillierte :-) Zusammenfassung:
> https://git-scm.com/book/de/v2

Mit 546 Seiten scheint dieses "git" ja sehr einfach zu sein.
Ist das eine Programmiersprache die man lernen muß um programmieren zu 
können?
Duck und weg.

von Norbert (der_norbert)


Lesenswert?

Hans H. schrieb:
> Frank K. schrieb:
>> Hier gibt es eine detaillierte :-) Zusammenfassung:
>> https://git-scm.com/book/de/v2
>
> Mit 546 Seiten scheint dieses "git" ja sehr einfach zu sein.
> Ist das eine Programmiersprache die man lernen muß um programmieren zu
> können?
> Duck und weg.

Bücher schaden nur demjenigen der sie nicht besitzt bzw. nicht gelesen 
hat.

Von dieser Regel gibt es nur recht wenige Ausnahmen.

Die Bibel hat vermutlich 1000 Seiten und da steht überhaupt gar nichts 
von Interesse drin.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Stefan F. schrieb:
> Eben nicht. Git kommt im Gegensatz zu SVN ohne (zentrales) Repository
> aus. Danach hattest du doch gefragt.

SVN lässt sich sehr wohl mit lokalen Repositories verwenden. Die 
entsprechenden URL beginnen dann mit file:// statt svn:// o.ä.. Ein 
wesentlicher Unterschied besteht aber darin, dass es bei Subversion nur 
eine einzige Repository-Instanz geben kann, d.h. man kann nicht nur 
lokal arbeiten und versionieren und das ganze dann in einem separaten 
Schritt auf ein anderes Repository "hochladen" (push).

von Ali K. (teddy50)


Lesenswert?

Hat jemand Erfahrung mit TortoiseGit?
Kann man das gut nutzen um nicht das Terminal von git nutzen zu wollen?

von J. S. (jojos)


Lesenswert?

TortoiseGit ist ok, aber nicht für den Einstieg. Wenn man nicht weiß was 
man eigentlich tun muss, dann führen die vielen Buttons die man einfach 
drücken kann zu schnell zum Chaos.
Für den Anfang tatsächlich genau die Kommandos aus der ersten Antwort 
hier im Thread von Achim ausprobieren und den Ablauf mit ‚git commit‘ 
verinnerlichen. Bei Fehlern ist git sehr hellseherisch und gibt Tipps 
was vielleicht gemeint war.
In VSCode der git client ist auch gut und einfach zu bedienen. Mit 
PlatformIO als Ersatz zur Arduino IDE ist das ein Quantensprung.

: Bearbeitet durch User
von Sheeva P. (sheevaplug)


Lesenswert?

Andreas S. schrieb:
> Stefan F. schrieb:
>> Eben nicht. Git kommt im Gegensatz zu SVN ohne (zentrales) Repository
>> aus. Danach hattest du doch gefragt.
>
> SVN lässt sich sehr wohl mit lokalen Repositories verwenden. Die
> entsprechenden URL beginnen dann mit file:// statt svn:// o.ä.. Ein
> wesentlicher Unterschied besteht aber darin, dass es bei Subversion nur
> eine einzige Repository-Instanz geben kann, d.h. man kann nicht nur
> lokal arbeiten und versionieren und das ganze dann in einem separaten
> Schritt auf ein anderes Repository "hochladen" (push).

Najaaa... bei Git ist jedes Arbeitsverzeichnis ein eigenes Repository. 
Man kann Git auch mit einem zentralen Repo aufsetzen ("git init --shared 
--bare /var/git/MingDing.git"), aber für den Anwendungsfall, für den 
Herr Torvalds (ebender, ja) es entwickelt hat, nämlich die Entwicklung 
des Linux-Kernels (mit mehreren tausend Entwicklern) funktioniert das 
eher... suboptimal.

Darum ist Git auf Anwendungsfälle ausgelegt, die klassische Version 
Control Systems (VCS) wie VCS, CVS, Subversion und Co. eher schlecht 
abbilden, also insbesondere Branching und Merging. Dabei ist Git 
besonders mächtig und die Basis für "echte" Workflow-Modelle wie 
beispielsweise Gitflow.

Heute möchte ich nicht mehr ohne Git arbeiten -- nicht einmal in 
privaten Projekten. Dabei kenne ich noch andere VCS, aber an die 
Mächtigkeit und Flexibilität von Git kommt keins davon auch nur 
ansatzweise heran.

von Rolf M. (rmagnus)


Lesenswert?

Andreas S. schrieb:
> Stefan F. schrieb:
>> Eben nicht. Git kommt im Gegensatz zu SVN ohne (zentrales) Repository
>> aus. Danach hattest du doch gefragt.
>
> SVN lässt sich sehr wohl mit lokalen Repositories verwenden.

Es wurde ja nicht gesagt, dass das Repo nicht lokal sein kann, sondern, 
dass es nur ein einziges zentrales Repo gibt.

Sheeva P. schrieb:
> Darum ist Git auf Anwendungsfälle ausgelegt, die klassische Version
> Control Systems (VCS) wie VCS, CVS, Subversion und Co. eher schlecht
> abbilden, also insbesondere Branching und Merging. Dabei ist Git
> besonders mächtig und die Basis für "echte" Workflow-Modelle wie
> beispielsweise Gitflow.

Solche Workflows sind bei Arbeit mit mehreren Entwicklern die größte 
Stärke von git. Damit lässt sich so ein Software-Entwicklungsprojekt 
sehr viel strukturierter bearbeiten, vor allem wenn man das noch mit den 
Features von z.B. gitlab oder Atlassian kombiniert.

> Heute möchte ich nicht mehr ohne Git arbeiten -- nicht einmal in
> privaten Projekten. Dabei kenne ich noch andere VCS, aber an die
> Mächtigkeit und Flexibilität von Git kommt keins davon auch nur
> ansatzweise heran.

Ich finde, wer halbwegs ernsthaft Software entwickelt, bracht zwingend 
ein Versionierungstool. Ich bin immer wieder überrascht, wie viele da 
noch mit x verschiedenen Verzeichnissen oder dutzenden von .zip-Archiven 
ihres Codes halbwegs den Überblick zu behalten versuchen.
Bis auf die dezentrale Eigenschaft von git brauche ich aber dessen 
spezielle Features privat nicht unbedingt, da würde es sonst auch svn 
tun. Da ich es geschäftlich aber auch viel nutze, nehme ich es natürlich 
privat auch.
Bei git ist es auch besonders einfach, ein neues Projekt zu starten - 
eifach "git init", und schon habe ich ein neues Repo + Arbeitskopie.

von Jan K. (jan_k)


Lesenswert?

Wer auch nur im entferntesten Sinne professionell Code entwickeln 
möchte, muss heutzutage Git lernen. Es ist der Standard und das gesamte 
ecosystem moderner Tools setzt darauf. Es ist essentiell trotz der 
Lernkurve, die durchaus existiert ;)

von Stefan F. (Gast)


Lesenswert?

Hans H. schrieb:
> Mit 546 Seiten scheint dieses "git" ja sehr einfach zu sein.

In diesem Buch wird Git vollständig beschrieben. Das ust halt eine sehr 
mächtige ausgereifte Software.

Die Basics sind einfach, die lernt man besser durch ein Tutorial. Das 
Buch braucht man eher selten für Soezialfälle und Detail Fragen.

von Stefan F. (Gast)


Lesenswert?

Andreas S. schrieb:
> SVN lässt sich sehr wohl mit lokalen Repositories verwenden.

Ja stimmt.

Ali K. schrieb:
> Hat jemand Erfahrung mit TortoiseGit?
> Kann man das gut nutzen um nicht das Terminal von git nutzen zu wollen?

Habe ich mal probiert und letztendlich als weitgehend nutzlos empfunden.

TortoiseSvn und TortoiseHg sind 20 mal nützlicher. TortoiseGit ist 
völlig anders (leider).

Allerdings ist das Git Kommandozeilen-Tool sehr gut gemacht und in 
Kombination mit der mitgelieferten gitk Gui und einem Merge Tool wie 
Winmerge oder Meld gut zu handhaben.

Wenn man nur alleine lokal arbeitet  merkt man den Unterschied zwischen 
Git, SVN und Mercurial kaum. Deren Basis- Funktionen sind fast 
identisch. Erst beim Arbeiten im Team werden die Unterschiede wichtig.

Die Open Source Projekte haben fast alle auf Git gewechselt. Die 
Programmiersprache Go lädt fremde Bibliotheken von öffentlichen Git 
Repositories, da hat man also keine freie Wahl.

von Roland E. (roland0815)


Lesenswert?

Stefan F. schrieb:
> Roland E. schrieb:
>> OK. Wie SVN nur in bunt...
>> Wenns weiter nix ist...
>
> Eben nicht. Git kommt im Gegensatz zu SVN ohne (zentrales) Repository
> aus. Danach hattest du doch gefragt.

Ist für eine Datensicherung aber nicht optimal.

Wobei ich SVN ja auch dezentral lokal aufsetzen könnte...

von Εrnst B. (ernst)


Lesenswert?

Roland E. schrieb:
> Ist für eine Datensicherung aber nicht optimal.

"Kommt ohne aus" bedeutet nicht "kann nicht verwenden".

Du kannst natürlich einen zentralen upstream verwenden, dann ists 
ähnlich zu SVN, du kannst aber auch mehrere gleichzeitig verwenden, egal 
ob Webservice wie Github/lab, NAS-Netzwerklaufwerk, SSH-Server in 
Australien, USB-Stick im Tresor, ...

von Rolf M. (rmagnus)


Lesenswert?

Roland E. schrieb:
> Stefan F. schrieb:
>> Roland E. schrieb:
>>> OK. Wie SVN nur in bunt...
>>> Wenns weiter nix ist...
>>
>> Eben nicht. Git kommt im Gegensatz zu SVN ohne (zentrales) Repository
>> aus. Danach hattest du doch gefragt.
>
> Ist für eine Datensicherung aber nicht optimal.
>
> Wobei ich SVN ja auch dezentral lokal aufsetzen könnte...

Es ist nicht dezentral. Auch dann nicht wenn man es rein lokal aufsetzt.

von Dieterich (einermehr)


Lesenswert?

Hallo

Kolja L. schrieb:
> Im Grunde genommen ist es dafür da, die Änderungen in einem Projekt zu
> dokumentieren.
> Ich glaube in Word gibt es es, rudimentär, etwas vergleichbares.
>...


Daumen Hoch.

Das ist endlich mal eine Erklärung, die jeder versteht, im Gegensatz zu 
den "Erklärungen", die soviel voraussetzen, dass eine so allgemein (aber 
wichtige, der TO ist ganz sicher nicht alleine mit seinen Fragen, nur 
traut sich kaum einer diese zu stellen) gestellte Frage keinen Sinn 
machen würde.

Es ist immer wieder erstaunlich, welch große Probleme viele "Nerds" 
(eigentlich eine Ehrenbezeichnung, aber... ) haben über ihren Horizont 
zu schauen, bzw. sich daran zu erinnern, dass auch sie mal klein 
angefangen haben, bzw. dass halt nur sehr wenige Super talentiert in 
irgendeinen Technischen Bereich , in der Mathematik und oder der 
Informatik sind.
"Es ihnen zufliegt"

Auch bedauerlich zu sehen, wie negativ die Frage des TO bewertet wird.
Dabei handelt es sich doch um eine Frage, wie sie genau (im besten 
Sinne, keine Ironie, keine  versteckte Kritik - nein ganz ernst gemeint) 
ins Forum passt.

Und ich kann es schon "sehen":

"Nutze Google"
"Nutze die Wikipedia"
"Bla Bla Bla"

Nein eben nicht - weil dort wird oft genauso tief eingestiegen, 
letztendlich wird dort ebenfalls nichts erklärt, zumindest wenn man Laie 
ist, der GIT usw. typischer Weise nur als Quelle für ein Nachbauprojekt 
oder zum Download eines Programms nutzt, und man sich Fragt:

"Warum so kompliziert, warum nicht einfach ein fertiger "normaler" 
Download?


Genau das wie du Kolja L. es erklärt hast, sieht eine gute Erklärung, 
die sich an einen echten (erkennbaren) Laien wendet aus.
Von da aus kann man ja gerne tiefer einsteigen, wenn man selbst (in 
einer Gruppe - im "einfachen" nach Feierabend und wenn man Lust hat 
Hobbyumfelds auch nicht üblich) aktiv werden will.

Diederich

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Dieterich schrieb:
> Es ist immer wieder erstaunlich ...

Git ist ein Arbeitsmittel für Entwickler, dementsprechend ist die 
offizielle Anleitung gestaltet. Nicht-Entwickler sollen das gar nicht 
benutzen.

von Kolja L. (kolja82)


Lesenswert?

Dieterich schrieb:
> Hallo

Ähh, danke für deine Ausführung. Ich bin etwas rot geworden.

Und du sprichst mMn ein wirkliches Problem an.
Jemand fragt etwas auf seinem Niveau, jemand anderes antwortet auch auf 
seinem Niveau.
Ich habe sehr oft das Gefühl, das viele Antworten den Fragenden nicht 
weiterbringen, obwohl sie korrekt sind.

von Dieterich (einermehr)


Lesenswert?

Hallo

Stefan F. schrieb:
> Nicht-Entwickler sollen das gar nicht
> benutzen.

Aber auch als "nur" mit einem µC hantierender Bastler der ein Projekt 
nachbaut und jemand der gerne quelloffene und kostenlose Software 
("Open-Source") nutzt, kommt man halt ganz schnell mit GitHub und 
ähnliches in Verbindung - und sei es nur durch einen Link.

Da fragt man sich als reiner Anwender schon:

Warum so komisch, warum gibt es da ganze Ordner, was soll das?
Ich möchte doch nur den Download, den hex code, den fertigen Sketch...?!
Warum die "1001" anderen Dateien, die doch "keiner" braucht?

Warum macht der Autor (dass es oft ein Team ist und oft aus Profis mit 
entsprechendem Background und Workflow aus dem Arbeitsleben besteht, ist 
halt oft viel zu fern, von der "Welt" des einfachen Anwenders und 
Freizeit µC Nutzers - ja nicht nur bei "Nerds" ist der Horizont nun mal 
begrenzt und das meist ganz ohne bösen Willen) es sich scheinbar so 
schwer und "komisch" ?

Man kennt als reiner Anwender ja nur die fertigen Programme bzw. die 
Firmware, den Sketch und selbst wenn man mal dann sogar selbst was 
Kleines als reiner Hobbyist ohne beruflichen Background was macht (halt 
oft im Arduinouniversum) landet es halt auf der lokalen Festplatte und 
die "Versionen" -falls überhaupt vorhanden sind in Unterordnern mit 
entsprechendem Datum "sortiert".

Man kennt die ganzen Zwänge und Notwendigkeiten halt nicht und wird halt 
doch manchmal (recht oft wenn es um µC Code oder Open Source Software 
geht)  nach GitHub und Co. weiterleitet.

Da ist die Frage nach dem Sinn und was ist das überhaupt alles soll und 
wie es funktioniert (auch wenn man es nie aktiv als Anbieter nutzen 
wird) schon berechtigt, nur scheint das bei den "Profis" niemand mehr zu 
verstehen...

Kolja L. schrieb:
> Ich habe sehr oft das Gefühl, das viele Antworten den Fragenden nicht
> weiterbringen, obwohl sie korrekt sind.

Das Gefühl habe ich auch - je spezieller und technischer das Thema ist, 
umso mehr fällt auch mir das immer wieder auf.

Dietrich

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Dieterich schrieb:
> Da fragt man sich als reiner Anwender schon ...

Offenbar kannst du nicht richtig zwischen Anwender und Entwickler 
trennen.


Als Anwender von Ibuprofen kaufe eine eine fertige Packung Ibuprofen. 
Ich setze mich nicht mit dem Rezept und den einzelnen Zutaten 
auseinander um das Medikament selbst zu produzieren. Und wenn doch, 
sollte ich dazu bereit sein, alles nötige zu lernen.

von Dieterich (einermehr)


Lesenswert?

Hallo

Stefan F. schrieb:
> Ich setze mich nicht mit dem Rezept und den einzelnen Zutaten
> auseinander um das Medikament selbst zu produzieren. Und wenn doch,
> sollte ich dazu bereit sein, alles nötige zu lernen.


Aber vielleicht interessiert es mich, wie und warum das jeweilige 
Medikament funktioniert - jetzt aber nicht auf Mediziner oder 
"Entwickler" Niveau, aber mal eben "ganz grob und generell"

Insgesamt schadet es nicht generell und unabhängig vom Thema auch mal zu 
fragen: "Warum und wie"?

Es bildet, hält einen geistig wach und ist (oft) einfach nur 
interessant.

Des Weiteren hinkt dein Vergleich ein wenig:

Das Rezeptfreie Medikament Ibuprofen kaufe ich in der Apotheke (oder in 
NL und BE im Supermarkt zum Bruchteil des Preises in DL...) - immer und 
ohne besondere Ausnahme.

Aber als Anwender von so mancher Open Source Software oder fast immer, 
wenn es um den Sourcecode für fertige Nachbau µC Projekte geht, erfolgt 
der "Download" via GitHub und ähnlichen Systemen und eben nicht über 
einen normalen Download (oder den für Windowsnutzer seltsamen 
Paketsystemen in der Linuxwelt).

Da wird man als auch nur minimal an den Hintergründen interessierter 
halt neugierig und möchte ein wenig (aber halt auch nicht alle Details) 
mehr wissen - auch wenn man es für die reine Anwendung nicht braucht.

Und dann sind Erklärungen wie sie Kolja L. genau das richtige - nicht zu 
viel und (fast) nichts voraussetzend.
Solche Erklärungen im technischen Bereich und speziell auch der 
Mathematik (ist mir zumindest immer so aufgefallen) zu geben scheint für 
sehr viele Spezialisten aber "Pfui" zu sein...

: Bearbeitet durch User
von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Dieterich schrieb:
> Aber als Anwender von so mancher Open Source Software oder fast immer,
> wenn es um den Sourcecode für fertige Nachbau µC Projekte geht, erfolgt
> der "Download" via GitHub und ähnlichen Systemen und eben nicht über
> einen normalen Download

Was ist denn für dich ein "normaler" Download, wenn du mit einem ZIP 
File schon überfordert bist.

> Da wird man als auch nur minimal an den Hintergründen interessierter
> halt neugierig und möchte ein wenig (aber halt auch nicht alle Details)
> mehr wissen

Wo ist dann das Problem, wenn dir jemand sagt, du sollst Git 
installieren und "git clone https://whatever " eingeben und eine 
Anleitung zu Git zu lesen?

Komplexe Projekte sind halt so. Werfe doch den Entwicklern nicht vor, 
dass sie ihr Projekt nicht für Laien gestaltet haben.

von Dieterich (einermehr)


Lesenswert?

Hallo

Ziemlich frecher persönlicher Angriff, den du da nochmal ablieferst 
(eventuell meine Beiträge mal genau durchlesen und verstehen...).

von Stefan F. (Gast)


Lesenswert?

Dieterich schrieb:
> Ziemlich frecher persönlicher Angriff

Vielleicht haben wir unterschiedliche Projekte im Sinn. Nenne mal ein 
konkretes Beispiel für

Dieterich schrieb:
> Aber als Anwender von so mancher Open Source Software oder fast immer,
> wenn es um den Sourcecode für fertige Nachbau µC Projekte geht, erfolgt
> der "Download" via GitHub und ähnlichen Systemen und eben nicht über
> einen normalen Download (oder den für Windowsnutzer seltsamen
> Paketsystemen in der Linuxwelt).

von Ein T. (ein_typ)


Lesenswert?

Dieterich schrieb:
> Ziemlich frecher persönlicher Angriff, den du da nochmal ablieferst
> (eventuell meine Beiträge mal genau durchlesen und verstehen...).

Nun, tatsächlich bietet Github seine Repositories auch als Archive im 
weit verbreiteten ZIP-Dateiformat an. Schau bitte mal auf folgendes 
Repository: https://github.com/gofiber/fiber -- wenn Du diese Webseite 
aufrufst, gibts oben links ein Dropdown-Menü mit der Aufschrift "<> 
Code". Wenn Du dieses Dropdownmenü öffnest, findest Du auf der linken 
Registerkarte "Load" zwar zunächst die (für Entwickler wesentlich 
komfortableren) Möglichkeiten des Downloads über git(1), aber darunter 
auch ein Feld, das mit "Download ZIP" beschriftet ist und Dir genau das 
liefert: ein ZIP-Archiv. Mir persönlich fällt gerade beim besten Willen 
keine Möglichkeit ein, wie man das noch komfortabler gestalten kann: 
nach zwei Klicks startet der Download.

von Harald K. (kirnbichler)


Lesenswert?

Ein T. schrieb:
> Mir persönlich fällt gerade beim besten Willen
> keine Möglichkeit ein, wie man das noch komfortabler gestalten kann:
> nach zwei Klicks startet der Download.

Es sind zwei Klicks. Zwei! Und man sieht nicht sofort einen großen, 
freundlichen Button mit der Beschriftung "Download". Welche Lebenszeit 
da verloren geht, zwei Klicks! Das nutzt ja die Maus ab wie nix, da ist 
ja so ein Captcha-Ding wo man Hydranten oder lächelnde Hunde anklicken 
soll, noch harmlos gegen ...

von Stefan F. (Gast)


Lesenswert?

Harald K. schrieb:
> Es sind zwei Klicks. Zwei! Und man sieht nicht sofort einen großen,
> freundlichen Button mit der Beschriftung "Download".

Unabhängig von der Ironie:
Weil GitHub ein Dienst für Entwickler ist, nicht für Anwender.

Webseiten für Anwender sind insgesamt anders gestaltet und da kann man 
problemlos einen Download Link platzieren, der direkt zum ZIP File 
führt, ohne dass der Anwender diese GitHub Seite überhaupt anschauen 
muss.

Allerdings leuchtet mir immer noch nicht ein, was der gewöhnliche 
Anwender mit dem ZIP vom Quelltext anfangen soll.

von J. S. (jojos)


Lesenswert?

Ja, schöner wäre es wenn mit einem Klick git clone ausgeführt würde.

von Harald K. (kirnbichler)


Lesenswert?

Stefan F. schrieb:
> Allerdings leuchtet mir immer noch nicht ein, was der gewöhnliche
> Anwender mit dem ZIP vom Quelltext anfangen soll.

Niemand hindert die Nutzer von github-repositories, dort auch Binaries 
unterzubringen.

Schon gesehen, das gibts. Manche verlinken die dann einzeln (so daß man 
sie ohne Sourcen etc. herunterladen kann), manche machen das aber auch 
nicht.

So what.

von Stefan F. (Gast)


Lesenswert?

Harald K. schrieb:
> Niemand hindert die Nutzer von github-repositories, dort auch Binaries
> unterzubringen.

Dem Dieterich, geht es aber um den Download der Quelltexte. Das ist ihm 
bei GitHub zu kompliziert gestaltet. Das ist der Punkt, um den gerade 
diskutiert wird.

von Dieterich (einermehr)


Lesenswert?

Hallo

Nein darum geht es mir nicht -interessant was du so zu wissen meinst.

Auch wenn es für dich scheinbar unvorstellbar ist:

Mich und wohl auch den TO interessieren "einfach so" die Hintergründe - 
ich bin in der Lage, das ZIP File und den für mich wichtigen Download zu 
erkennen und nutzen.

Man (der TO, ich) sieht etwas im Zusammenhang mit einem Programm 
Download - das ich zwar für den reinen Nutzen nicht benötige, das aber 
trotzdem meine Neugier und Interesse (Wie, warum, was ist das,...) 
weckt.
Da mal eine deutliche, wenn natürlich auch nur oberflächliche (aber 
vollkommen ausreichende) verständliche Erklärung zu erhalten ist doch 
was Schönes und nützliches.

Ich bin halt, zumindest bei den im weitesten Sinne technischen 
Bereichen, nicht der, wer etwas einfach nutzt ohne sich über die 
Hintergründe wenigstens ganz grob aus echten Interesse und Neugier zu 
informieren.
Für mich als mehr oder weniger ausgeprägten Nerd gehört das einfach 
dazu.

Scheinbar ist das für so manchen tatsächlich unvorstellbar - kein 
Problem-  nur hätte ich von Leuten die sich in diesen Forum 
herumtreiben, ähnliches Grundinteresse und eine generelle technische 
Neugier, einfach so und immer,  erwartet...

von Stefan F. (Gast)


Lesenswert?

Dieterich schrieb:
> Nein darum geht es mir nicht -interessant was du so zu wissen meinst.

Dann sei doch bitte so nett und beantworte meine Rückfrage.

Stefan F. schrieb:
> Vielleicht haben wir unterschiedliche Projekte im Sinn. Nenne mal ein
> konkretes Beispiel für

Dieterich schrieb:
> Aber als Anwender von so mancher Open Source Software oder fast immer,
> wenn es um den Sourcecode für fertige Nachbau µC Projekte geht, erfolgt
> der "Download" via GitHub und ähnlichen Systemen und eben nicht über
> einen normalen Download (oder den für Windowsnutzer seltsamen
> Paketsystemen in der Linuxwelt).

Du kannst das Missverständnis einfach korrigieren, wenn du daran 
Interesse hast.

von J. S. (jojos)


Lesenswert?

wenn es um Sourcecode geht, dann ist der Zip Download einfach Mist und 
konträr zur Versionskontrolle. Aber das gibt es wahrscheinlich weil 
nicht jeder git nutzen möchte.
Mit dem Zipfile lädt man nur den ausgewählten Branch herunter. Wenn man 
einen anderen möchte, dann muss man den etwas weiter links in der Zeile 
erstmal auswählen und dann den Zip Download starten. Mit 'git clone' 
holt man das gesamte Repo mit allen Branches/Versionen und kann die 
umschalten. Mit git clients auch bequem mit zwei Klicks. Und auch das 
Repo aktualisieren kostet nur einen Klick, kein erneutes Zip holen, 
auspacken, drüberkopieren.

von Daniel A. (daniel-a)


Lesenswert?

Git ist eigentlich ganz einfach. Ein Commit ist einfach ein 
Arbeitszustand. Ein Commit kann Vorgänger Commits haben, also vorherige 
Zustände, das ist die Historie. Jeder Commit hat einen Hash, das ist 
dort eine eindeutige ID mit dem man sich auf einen bestimmten Commit 
beziehen kann. Und dann kann man sich mit Branches und Tags einzelne 
Commits markieren. Die Tags lässt man in der regel auf dem Commit, wo 
man sie ursprünglich gesetzt hat. Die Branches hat man dort, wo man 
gerade arbeitet oder später vielleicht noch weiter macht, ein wichtiger 
aktueller Arbeitszustand. In der regel hat man einen aktiven Branch 
"ausgecheckt", auf dem man gerade arbeitet *. Macht man einen neuen oder 
so Commit, schiebt git den aktiven Branch auf den neuen weiter.

Das ganze gibt es in jedem Repo, lokal, und Remote (auf dem Server). Man 
kann sich in seinem repo mehrere Remotes eintragen, also andere Repos. 
Mit "git push" kann man seine neuen Commits von einem seiner eigenen 
Branches auf in ein anderes Repo pushen.
"git pull" ist das umgekehrte, macht aber etwas mehr, nämlich fetch & 
merge. "git fetch" holt sich die Commits vom remote Repo, und die Infos, 
was für Branches es auf dem Remote gibt. Mit "git merge" kann man die 
neuen Commits von einem anderen Branch übernehmen. Falls die 2 Branches 
beide Commits haben, die nicht im anderen sind, hat man einen merge 
Konflikt. "git merge" unterstützt da mehrere Lösungen. ff-only (fast 
forward only) Ist zu empfehlen. Da wird einfach abgebrochen.

Alternativ kommt beim Mergen man in einen Zustand, wo man 2 oder mehr 
Vorgänger commits hat, und der Merge aktiv ist. Man kann den Notfalls 
auch wieder abbrechen. Man kann von Dateien eine der Versionen 
auschecken, oder man kann schauen, welche Änderungen es in einer Datei 
gab (man sieht die dann beide in der Datei). Wenn man dann die Datei 
angepasst hat, das die richtigen Teile drin sind, kann man die wider mit 
"git add" hinzufügen, und den Merge beenden.
Falls nur unterschiedliche Dateien bearbeitet wurden, kann git das 
Mergen auch voll automatisch machen. Nach dem Merge gibt es so oder so 
dann einen merge commit, mit allen vorherigen Commits als Vorgänger.

Die merge commits sind unschön. Leute tendieren dazu, wild zwischen 
Branchs hin und her zu Mergen, und deren Historie ist dann nie gleich, 
weil die an unterschiedlichen Orten merge commits haben.

Meistens besser ist "git rebase -i". Da nimmt man den anderen Branch, 
und schiebt seine neuen Commits hinten drauf. Man kann dann auch noch 
auswählen, welche Commits / Änderungen will ich überhaupt, welche fasse 
ich zusammen, usw. Am Ende hat man dann eine schön gerade, konsistente 
Historie. "git rebase" ist der Unterschied zwischen denen, die Git 
verwenden, und denen, die Git beherrschen.

Dann gibt es noch "git reset". Das setzt den aktuell den Branch auf 
einen anderen Commit, was praktisch ist, wenn man scheisse gebaut hat, 
und wieder auf einen vorherigen Stand will.

Und eine wichtige Sache hab muss du noch wissen. Wie man Commits 
überhaupt erstellt. Mit "git add" kopiert man eine Datei ins staging 
area. "git restore" macht es rückgängig. Und "git commit" nimmt den 
momentanen Commit, und die Dateien im staging area, und macht einen 
neuen Commit.

Um nachzusehen, was im Repo gerade los ist, gibt es "git status", "git 
log", "git branch -a", und "git tag". Und zum Vergleichen von Dateien, 
auch zwischen Comits wenn man will "git diff". Und "git show" um einfach 
eine Datei oder einen Commit anzuzeigen.

Und das ist alles, was man zu git wissen muss.

* Hat man keinen aktiven Branch, sondern einfach nur irgend einen Commit 
aufgesteckt, nennt sich das ein "detache HEAD", der HEAD ist der 
momentan aktive Commit und/oder branch. Der, dessen Dateien im 
momentanen workdir ausgecheckt sind (von denen man auch mehrere haben 
kann).

von Rolf M. (rmagnus)


Lesenswert?

J. S. schrieb:
> wenn es um Sourcecode geht, dann ist der Zip Download einfach Mist und
> konträr zur Versionskontrolle. Aber das gibt es wahrscheinlich weil
> nicht jeder git nutzen möchte.

Git braucht man nur, wenn man selbst an dem Projekt mitentwickeln oder 
es zumindest immer lokal aktuell halten will. Wenn man einfach nur eine 
bestimmte Version runterladen möchte, reicht es, sich das zip zu holen. 
Dann braucht man sich mit git gar nicht erst auseinanderzusetzen.

> Mit dem Zipfile lädt man nur den ausgewählten Branch herunter.

Man lädt keinen Branch, sondern nur einen ganz spezifischen Stand 
runter, in der Regel den neuesten des ausgewählten Branches.

Daniel A. schrieb:
> Git ist eigentlich ganz einfach.

Gute Erklärung. Eine Anmerkung:

> Ein Commit ist einfach ein Arbeitszustand.

Ein Commit ist eine Änderung des Arbeitszustandes - quasi ein diff 
zwischen zwei Ständen. Leider gibt es bei git keine Kennung für einen 
ganz bestimmten Zustand, wie es das bei svn gibt.

: Bearbeitet durch User
von Le X. (lex_91)


Lesenswert?

Daniel A. schrieb:
> Git ist eigentlich ganz einfach.
> [...]
> Und das ist alles, was man zu git wissen muss.

Ich bin mir sicher, ein git-Anfänger hätte mit deiner "Anleitung" seine 
Freude ;-)

von Rolf M. (rmagnus)


Lesenswert?

Le X. schrieb:
> Ich bin mir sicher, ein git-Anfänger hätte mit deiner "Anleitung" seine
> Freude ;-)

Es reicht sicherlich nicht aus, damit der Anfänger zum Profi wird, aber 
es ist ein guter Überblick über alle wichtigen Funktionen von git. Für 
die Anwendung muss man es sich dann aber noch etwas detaillierter und 
mit Beispielen anschauen. Das würde aber den Rahmen eines 
µC.net-Beitrags sprengen.

: Bearbeitet durch User
von Klaus (feelfree)


Lesenswert?

Rolf M. schrieb:
> , aber es ist ein guter Überblick über alle wichtigen Funktionen von git

Für jemanden, der wissen will, was git eigentlich ist, geht es aber 
meilenweit an der Frage vorbei.

Und ob es als Zusammenfassung "gut" ist, keine Ahnung. Klingt wie eine 
grobe Übersetzung von zB
https://git-scm.com/docs/gittutorial

von Rolf M. (rmagnus)


Lesenswert?

Klaus schrieb:
> Rolf M. schrieb:
>> , aber es ist ein guter Überblick über alle wichtigen Funktionen von git
>
> Für jemanden, der wissen will, was git eigentlich ist, geht es aber
> meilenweit an der Frage vorbei.

Die Frage war:

Esmu P. schrieb:
> Was ist das? Und wie benutzt man es?

Die Antwort sagt, wie man es benutzt, passt also perfekt zur Frage.

von Dieterich (einermehr)


Lesenswert?

Hallo

Daniel A. schrieb:
> Git ist eigentlich ganz einfach.

Daniel A. schrieb:
> Ein Commit ist einfach ein
> Arbeitszustand. Ein Commit kann Vorgänger Commits haben, also vorherige
> Zustände, das ist die Historie. Jeder Commit hat einen Hash, das ist
> dort eine eindeutige ID mit dem man sich auf einen bestimmten Commit
> beziehen kann. Und dann kann man sich mit Branches und Tags einzelne
> Commits markieren.

Alles Commit ähh klar ?

Ist die Ironie beabsichtigt?
Wenn ja, versuche es mal als Schriftsteller, über einen potenten 
Nachfolger von Terry Pratchett (RIP)  würden sich sehr viele freuen - 
er, sein Humor, sein Sprachwitz und die Beobachtungsgabe des Verhaltens 
von uns allen fehlt immer noch schmerzlich

von J. S. (jojos)


Lesenswert?

Rolf M. schrieb:
>> Mit dem Zipfile lädt man nur den ausgewählten Branch herunter.
>
> Man lädt keinen Branch, sondern nur einen ganz spezifischen Stand
> runter, in der Regel den neuesten des ausgewählten Branches.

so ist es korrekter ausgedrückt, aber ich finde es trotzdem Mist.
Die Zifpfiles haben unabhängig vom Stand immer den gleichen Namen. Ein 
zip vom main heißt immer repo-main.zip. Wenn ich es heute herunterlade 
hat es den aktuellen Stand. Nach einem Tag, Woche oder Jahr hat es den 
gleichen Namen, aber eventuell hat sich einiges geändert. Und da ist es 
schon interessant was sich geändert hat. Im Zip ist auch kein Verweis 
auf den Versionsstand. Ja, wenn der Autor Versionen hinzugefügt hat, 
dann kann man die gezielt auswählen und herunterladen (auch über den 
Link 'Tags'), dann hat das zip auch den entsprechenden Namen. Aber wer 
weiß das und macht das so?
Natürlich kann man im Repo auch eine Versionsdatei einbauen. Arduino 
Libs haben so eine Beschreibungsdatei, aber das die immer aktuell ist, 
das ist Glücksache bzw. hängt von der Sorgfalt des Entwicklers ab. Und 
da gibt es genug Beispiele wo das nicht passt.
Und das alles nur weil ein 'git clone' zu kompliziert sein soll?

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

J. S. schrieb:
> Und das alles nur weil ein 'git clone' zu kompliziert sein soll?

Du gehst von dir selbst aus als jemand, der git kennt und regelmäßig 
benutzt. Aber nicht jeder weiß was git ist und hat es schon von vorne 
herein installiert. Das heißt, viele müssen erst mal herausfinden, was 
sie mit diesem Link überhaupt tun müssen. Dann erkennen sie ggf, dass 
sie erst ein Tool namens git finden, runterladen und installieren 
müssen. Als nächstes muss dann rausgefunden werden, dass eben ein 'git 
clone' auf der Konsole (die schon oft eine Herausforderung für sich ist) 
ausgeführt werden muss. Und da ist eigentlich die Frage, warum man 
diesen ganzen Bohei braucht, nur um den Code runterzuladen, schon fast 
zu erwarten.

: Bearbeitet durch User
von Ein T. (ein_typ)


Lesenswert?

Rolf M. schrieb:
> J. S. schrieb:
>> Und das alles nur weil ein 'git clone' zu kompliziert sein soll?
>
> Du gehst von dir selbst aus als jemand, der git kennt und regelmäßig
> benutzt. Aber nicht jeder weiß was git ist und hat es schon von vorne
> herein installiert. Das heißt, viele müssen erst mal herausfinden, was
> sie mit diesem Link überhaupt tun müssen. Dann erkennen sie ggf, dass
> sie erst ein Tool namens git finden, runterladen und installieren
> müssen. Als nächstes muss dann rausgefunden werden, dass eben ein 'git
> clone' auf der Konsole (die schon oft eine Herausforderung für sich ist)
> ausgeführt werden muss. Und da ist eigentlich die Frage, warum man
> diesen ganzen Bohei braucht, nur um den Code runterzuladen, schon fast
> zu erwarten.

Hm, Rolf, ich weiß ja nicht... Wer will denn Code herunterladen? Doch 
wohl nur jene, die etwas damit anfangen können, mithin: Entwickler. 
Software-Quellcode richtet sich nicht an Endbenutzer, sie sind nicht die 
Zielgruppe. Und so eine Plattform wie Github, Sourceforge oder Gitlab 
richtet sich ebenfalls nicht an Endbenutzer, das sind 
Kollaborationsplattformen für? Genau, Entwickler. Und zwar nicht an jene 
Entwickler, die nicht zumindest einmal gehört hat, was git ist, die 
keine Kommandozeile bedienen und und sich die nötigen Fertigkeiten zum 
Download der Quelltexte nicht schnell aneignen kann.

Insofern sollten wir bei dieser Debatte vielleicht auch einfach mal die 
Ziele und die Zielgruppe solcher Angebote betrachten. Für die 
Unbedarften gibt es trotzdem noch die Möglichkeit eines Zipfile, auch 
wenn diese Möglichkeit aus Entwicklersicht natürlich eher suboptimal 
ist. Daher können wir vielleicht kritisieren, daß das Userinterface 
(zwei Klicks!) für Endbenutzer eventuell nicht ideal gestaltet ist, aber 
dennoch: Endbenutzer sind schließlich nicht die Zielgruppe der ganzen 
Veranstaltung. Man kann und muß schließlich nicht jedem Recht machen. Es 
geht darum, die Zielgruppe zu erreichen, und für die gehören git und 
ähnliche Werkzeuge zum täglichen Brot.

von Dieterich (einermehr)


Lesenswert?

Hallo

Rolf M. schrieb:
> Du gehst von dir selbst aus als jemand, der git kennt und regelmäßig
> benutzt. Aber nicht jeder weiß was git ist und hat es schon von vorne
> herein installiert.


Das ist unabhängig von git das Kernproblem vieler "Spezialisten" und 
Insider - sie sind nicht in der Lage (ein böser Wille und gezieltes 
Heraushalten von Neulingen scheint nicht dahinterzustecken) sich in 
Anfänger hineinzuversetzen.
Auch wenn sich viele "Könner" und Nerds darüber lustig machen:

So wie Computerbild Programme, Anwendungen und zum Teil auch Hardware 
Schrittchen für Schrittchen -durchaus auch mit Screenshots und Videos 
erklärt, ist genau die richtige Art Leuten, die bei (nahezu) Null 
anfangen etwas zu erklären.

Ja, wenn man dann etwas Ahnung (speziell, aber auch generell) hat, dann 
sind Teile solcher Anleitung nervig bis für einen selbst lächerlich - 
aber niemals vergessen, wie man selbst angefangen hat, bzw. dass eine 
eigene Begabung eben nicht bei allen vorhanden ist.

Nerds und Speziallisten neigen leider zu einer verschulten "Erklärung" 
schon bei der Grundlagenvermittlung, wobei es bei so einigen Themen auch 
nahezu unmöglich ist eine gute Erklärung zu geben.

(Mein Dauerbrenner:
OOP  in Bezug auf µC und "Arduinoprogrammierung"
=>Nie eine wirklich eingängige Erklärung und Darstellung der Vorteile in 
der Praxis gefunden - dafür z.B. irgendwas mit farbigen Autos 
verschiedener Leistungsklassen und ähnlichen "Quatsch"  häää was soll 
das?

Erst nach Durchlesen vieler Artikel und es "einfach" nachvollziehen hat 
es irgendwann "Klick" gemacht und alles hat seinen Sinn bekommen.

Was den Klick aber ausgelöst hat, kann ich nicht sagen und mein jetzt 
vorhandenes Wissen könnte ich auch nicht einsteigerfreundlich und ohne 
(scheinbar) abstruse Realität und anwendungsferne Beispiele erklären.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Rolf M. schrieb:
> Du gehst von dir selbst aus als jemand, der git kennt und regelmäßig
> benutzt.

Ja, aber ich bin nicht mit diesem Wissen auf die Welt gekommen und oh 
Wunder, musste mich da erstmal einarbeiten und es lieben lernen.

Ich bin studierter Informatiker, aber programmieren im Studium war am 
IBM Terminal Lochkarten mit PL/1 Code zu stanzen, Lochkarten abgeben, 
und Tage später den Ausdruck vom Batch Job abholen. Von 
Versionskontrolle hat nicht mal jemand geträumt.
Dann kenne ich das Zip Chaos zur Genüge, und Freitags wusste ich meist 
nicht mehr was im Zip vom Montag drin war. Ich konnte mich auch nicht 
mit den Versionskontrollsystemen wie SourceSafe oder SVN anfreunden 
obwohl die bei uns schon lange genutzt wurden. Erst mit der Team Arbeit 
an einem größeren Projekt und der Hilfe von jemandem daraus hat es mir 
richtig Freude gemacht.

Ich preise das git gerne etwas provokant an, aber nicht um anderen zu 
sagen wie dumm sie sind, sondern es soll etwas zum überlegen anregen und 
ich möchte eher zum Einstieg ermutigen.

>Aber nicht jeder weiß was git ist und hat es schon von vorne
> herein installiert.

ja, aber wer kann nicht Software installieren? Wenn es daran scheitert 
sollte der Computer gar nicht erst eingeschaltet werden.
Unter Windows gibt es git als 'normalen' Installer, oder es gibt auch 
lange schon eine Packetverwaltung Winget über die es in der 
Kommandozeile mit 'winget install git.git' installiert werden kann. Ja, 
die böse Kommandozeile: viele wollen ja mittlerweile auch in Linux 
einsteigen, zur Weiterbildung ist ein Grundkurs/Tutorial zur 
Kommandozeile auch empfehlenswert.

Dann finde ich Erklärungen zu git nicht gut die einen in einem Absatz 
sofort mit den ganzen Fremdworten erschlagen. Da fällt sofort die 
Klappe, das ist für Profi Entwickler, das brauche ich nicht. Sehr 
falsch. Deshalb habe ich geschrieben klein anfangen, aus einem 
Arbeitsverzeichnis ein Repo machen mit git init und erst nur das Kapitel 
mit dem git commit (Arbeitsstand sichern) zu beschäftigen. Es gibt viele 
Tutorials auf YT oder das schon genannte git Buch sind gut. Die ersten 
Kapitel lesen und die Kommandos selber eintippen, da sind nicht die 500 
Seiten nötig.

Noch mal warum:
Marlin für 3D Drucker kennen sicher viele, für Anpassungen an eigene 
Drucker musste man ein Configuration.h ändern und das kompilieren. War 
mit Arduino einfach, haben viele hinbekommen. Das Problem war eher das 
herumprobieren an den vielen Einstellungen und die Frage was habe ich 
jetzt alles geändert...
Wenn man das Marlin jetzt über git clone geholt hat anstatt über das 
zip, dann konnte man über git das schon entschärfen. Für seine 
Spielwiese das Projekt kopieren, aber nicht mit copy, sondern durch eine 
Verwzweigung, englisch branch. Mit einer IDE wie VSC geht das einfach 
und mit einem Klick kann man jetzt zwischen den Versionen umschalten. 
Nach einer Änderung sichert man diese mit einem commit und einem 
Kommentar dazu. So kann man auch nach Monaten schnell wieder sehen was 
geändert wurde (über die git Historie die auch mit einem Klick schnell 
angezeigt werden kann).
Ist nur ein einfaches Beispiel, aber dafür muss ich kein Vollzeit 
Entwickler sein um so ein Werkzeug zu nutzen.

von Ein T. (ein_typ)


Lesenswert?

Dieterich schrieb:
> Das ist unabhängig von git das Kernproblem vieler "Spezialisten" und
> Insider - sie sind nicht in der Lage (ein böser Wille und gezieltes
> Heraushalten von Neulingen scheint nicht dahinterzustecken) sich in
> Anfänger hineinzuversetzen.

Das ist auch nicht ihre Aufgabe.

> So wie Computerbild Programme, Anwendungen und zum Teil auch Hardware
> Schrittchen für Schrittchen -durchaus auch mit Screenshots und Videos
> erklärt, ist genau die richtige Art Leuten, die bei (nahezu) Null
> anfangen etwas zu erklären.

Genau deswegen gibt es die Computerbild und ähnliche Publikationen. 
GitHub und ähnliche gehören aber nicht dazu, sie haben eine andere 
Aufgabe und könnten sie bei Weitem nicht mehr so gut erfüllen, wenn die 
Nutzer bei jedem Schritt auf die Bedürfnisse von Anfängern und 
Einsteigern eingeben müßten.

von Stefan F. (Gast)


Lesenswert?

Dieterich schrieb:
> Nie eine wirklich eingängige Erklärung und Darstellung der
> Vorteile (von OOP) in der Praxis gefunden

Muss OOP denn Vorteile bieten? Muss ein Hammer Vorteile haben? Oder ein 
Küchenmesser?

Manche Dinge kann man als Anfänger auch einfach mal als vorgegeben 
akzeptieren. Wenn man Erfahrung mit mehreren Alternativen gesammelt hat, 
kann man dann über Vor- und Nachteile diskutieren. Das ist kein gutes 
Thema für Anfänger.

von Kolja L. (kolja82)


Lesenswert?

Stefan F. schrieb:
> Muss OOP denn Vorteile bieten? Muss ein Hammer Vorteile haben? Oder ein
> Küchenmesser?

Wenn ich es gewohnt bin, mit der Zange die Nägel aus dem Brett zu ziehen 
oder mit der Schere das Geschenkpapier zu schneiden, darf ich das 
Konzept Hammer und Küchenmesser für meine (!) Zwecke schon hinterfragen.

Genau das ist gemeint, wenn es darum gehen soll, dem Fragenden auf 
seiner Ebene zu begegnen.

von Esmu P. (Firma: privat) (max707)


Lesenswert?

Jörg R. schrieb:
> Esmu P. schrieb:
>> Was ist das? Und wie benutzt man es?
>
> Nur im dunklen und ohne Zucker.
>
> Diese dahingerotzten Threads werden langsam zur Pest;-(
>
> Am besten über /dev null ins Delete verschieben.

Kann man diesen Mist von Jörg R. nicht einfach in die Tonne schieben 
liebe Moderatoren?

von Rolf M. (rmagnus)


Lesenswert?

Dieterich schrieb:
> Aber auch als "nur" mit einem µC hantierender Bastler der ein Projekt
> nachbaut und jemand der gerne quelloffene und kostenlose Software
> ("Open-Source") nutzt, kommt man halt ganz schnell mit GitHub und
> ähnliches in Verbindung - und sei es nur durch einen Link.
>
> Da fragt man sich als reiner Anwender schon:
>
> Warum so komisch, warum gibt es da ganze Ordner, was soll das?
> Ich möchte doch nur den Download, den hex code, den fertigen Sketch...?!
> Warum die "1001" anderen Dateien, die doch "keiner" braucht?

Welcher "reiner Anwender" baut sich den µC-Schaltungen auf?

> Warum macht der Autor (dass es oft ein Team ist und oft aus Profis mit
> entsprechendem Background und Workflow aus dem Arbeitsleben besteht, ist
> halt oft viel zu fern, von der "Welt" des einfachen Anwenders und
> Freizeit µC Nutzers - ja nicht nur bei "Nerds" ist der Horizont nun mal
> begrenzt und das meist ganz ohne bösen Willen) es sich scheinbar so
> schwer und "komisch" ?

Ganz einfach: Der Autor schreibt seinen Code primär für sich selbst, und 
er hat ja das Verständnis. Dann macht er den Code öffentlich verfügbar, 
damit andere, die vielleicht auch was damit anfangen können, in auch 
nutzen und ggf. auch sich an der Weiterentwicklung beteiligen können. 
Seine "Zielgruppe" hat also kein Problem damit, git zu verstehen.
Welche Motivation hätte er denn jetzt, zusätzlichen Aufwand zu 
betreiben, nur damit "reine Anwender" das mit drei Klicks und ohne 
jegliches Wissen ans Laufen bekommen? Man kann natürlich hoffen, dass er 
so nett ist, aber sich beschweren, wenn nicht, ist dann doch 
unrealistisch.

> Kolja L. schrieb:
>> Ich habe sehr oft das Gefühl, das viele Antworten den Fragenden nicht
>> weiterbringen, obwohl sie korrekt sind.
>
> Das Gefühl habe ich auch - je spezieller und technischer das Thema ist,
> umso mehr fällt auch mir das immer wieder auf.

Das liegt in der Natur der Sache. Speziellere und technischere Themen 
sind halt schwieriger einem, der dem Thema fern ist, zu vermitteln.

: Bearbeitet durch User
von Ein T. (ein_typ)


Lesenswert?

Rolf M. schrieb:
> Welche Motivation hätte er denn jetzt, zusätzlichen Aufwand zu
> betreiben, nur damit "reine Anwender" das mit drei Klicks und ohne
> jegliches Wissen ans Laufen bekommen?

hüstel Aus meiner persönlichen Erfahrung heraus muß ich leider sagen, 
daß das ohnehin so eine Sache ist. Endanwender anziehen heißt nämlich, 
daß mehr Dokumentations- und Supportaufwand anfällt, und die dafür 
aufgewendete Zeit fehlt dann bei der Weiterentwicklung des Projekts, 
meistens ohne daß dafür im Gegenzug sinnvolle Beiträge zum Projekt 
entstehen.

Wenn man ganz großes Pech hat, infiziert man sein Projekt sogar mit 
Benutzern, die... wie sage ich das... eines hohen Pflegeaufwandes 
bedürfen oder die alles kritisiert und es nicht einsieht, ihre Kritik an 
einem Geschenk freundlich und konstruktiv vorzubringen. Die kosten dann 
neben der Zeit auch noch Nerven, was bisweilen sogar dazu führen kann, 
daß Mitwirkende frustriert hinschmeißen.

Davon abgesehen, mal ehrlich: wie groß ist das Interesse eines Benutzers 
und und wie hoch ist die Wahrscheinlichkeit, daß er konstruktive 
Beiträge leisten möchte, wenn er nicht einmal bereit ist, Git zu lernen? 
OpenSource lebt nicht von Anwendern. OpenSource lebt von Mitmachern.

Edit: Typo (Der Dativ ist dem Genitiv ihm sein Tod.)

: Bearbeitet durch User
von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Rolf M. schrieb:
> J. S. schrieb:
>> Ein Commit ist einfach ein Arbeitszustand.
>
> Ein Commit ist eine Änderung des Arbeitszustandes - quasi ein diff
> zwischen zwei Ständen.

Konzeptionell in Git ein Commit tatsächlich ein bestimmter 
(Arbeits-)Zustand des Dateibaums.[1] Meiner Erinnerung nach waren das in 
den frühen Stadien  tatsächlich nur versionierte Dateibäume, was sich 
mithilfe von Hardlinks ja auch schon recht effizient implementieren 
lässt. Heute speichert das die darunter liegende Datenbank natürlich 
etwas cleverer (implementation detail).

[1] https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F

von Rolf M. (rmagnus)


Lesenswert?

Marcus H. schrieb:
> Rolf M. schrieb:
>> J. S. schrieb:
>>> Ein Commit ist einfach ein Arbeitszustand.
>>
>> Ein Commit ist eine Änderung des Arbeitszustandes - quasi ein diff
>> zwischen zwei Ständen.
>
> Konzeptionell in Git ein Commit tatsächlich ein bestimmter
> (Arbeits-)Zustand des Dateibaums.[1]

Eigentlich nicht, denn man kann nachträglich vor dem Commit noch einen 
andren Commit einfügen oder einen älteren Commit ändern, und dann ändert 
sich der Stand im Nachhinein, ohne dass am Commit selbst was geändert 
wurde. Siehe z.B. 
https://printf2linux.wordpress.com/2012/04/09/insert-a-commit-in-the-past-git/
Der Commit benennt nur die Änderung, nicht den kompletten Stand, den das 
Repo nach ihr hat.

von Daniel A. (daniel-a)


Lesenswert?

Rolf M. schrieb:
> Marcus H. schrieb:
>> Rolf M. schrieb:
>>> J. S. schrieb:
>>>> Ein Commit ist einfach ein Arbeitszustand.
>>>
>>> Ein Commit ist eine Änderung des Arbeitszustandes - quasi ein diff
>>> zwischen zwei Ständen.
>>
>> Konzeptionell in Git ein Commit tatsächlich ein bestimmter
>> (Arbeits-)Zustand des Dateibaums.[1]
>
> Eigentlich nicht, denn man kann nachträglich vor dem Commit noch einen
> andren Commit einfügen oder einen älteren Commit ändern, und dann ändert
> sich der Stand im Nachhinein, ohne dass am Commit selbst was geändert
> wurde.

Dabei ändert sich die commit ID der nachfolgenden commits, man könnte 
also sagen, das es dann nicht mehr die selben commits sind. Mit der 
alten commit ID kann man sogar weiterhin auf den alten stand / Commits 
zurück, solange die Objekte noch nicht weggeräumt wurden.

Bezüglich dessen, ob jetzt Commits ein Zustand oder eine Änderung dessen 
sind, würde ich es einfach so betrachten, dass Commits konzeptionell 
beides sind. Es kommt halt darauf an, wie man es betrachten will. Wenn 
ich ein Rebase mache, oder commits cherry-picke, bin ich an den 
Änderungen interessiert. Wenn ich einen Commit auschecke, bin ich am 
Zustand interessiert, den ich dort hatte.

Technisch gesehen sind Zustandsänderungen einfach der Unterschied 
zwischen Zuständen. Und ich denke in der Praxis ist es wenig Sinnvoll, 
sich über alle Änderungen die man je gemacht hat Gedanken zu machen. Ich 
denke, git ist in der Verwendung hier ziemlich intuitiv. Technisch 
gesehen sind es Zustände. Aber wenn man einen Zustand braucht, kann man 
ihn haben, und wenn man eine Zustandsänderung will, bekommt man die 
auch. Solange man nicht darüber nachdenkt, gibt es auch kein Problem.

von Sheeva P. (sheevaplug)


Lesenswert?

J. S. schrieb:
>  Aber wer weiß das und macht das so?

Hallo hier, ich. Vielleicht bin ich ja dumm, bitte urteile selbst.

Wenn Du es Richtig (tm) machen willst, dann lern und benutz Git.

von Sheeva P. (sheevaplug)


Lesenswert?

Rolf M. schrieb:
> Als nächstes muss dann rausgefunden werden, dass eben ein 'git
> clone' auf der Konsole (die schon oft eine Herausforderung für sich ist)
> ausgeführt werden muss.

Du bringst mich um, Rolf. Es gibt also Entwickler, für die eine 
Kommandozeile eine "Herausforderung" ist? Uiuiui. :-)

von Daniel A. (daniel-a)


Lesenswert?

Die meisten Smartphone Nutzer wissen ja nicht einmal, was eine Datei 
ist...
Und irgendwoher müssen die Entwickler ja kommen. Dass kann dann schon 
überwältigend sein, wen sie das alles erst alles lernen müssen.

von Le X. (lex_91)


Lesenswert?

Daniel A. schrieb:
> Die meisten Smartphone Nutzer wissen ja nicht einmal, was eine Datei
> ist...

Die meisten Nicht-Smartphone-Nutzer wissen auch nicht, was eine Datei 
ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.