Git Push vs Clone

Carcharoth

Bekanntes Mitglied
Hallo Zusammen

Ich möchte von 2 PCs an einem Projekt arbeiten können.
ich habe mir überlegt, dies über ein GitHub-Repository zu machen.

Nun bin mir nicht im Klaren wie ich das anstelle?
  • soll ich jeweils wenn ich an einem der PCs anfange zu arbeiten, den aktuellen Stand pullen, dran arbeiten und am Schluss wieder pushen?
  • oder kann ich da was mit clonen machen, damit auf Github immer die aktuelle Version ist ? Vielleicht habe ich aber gar nicht recht verstanden was Clone ist...

Danke für eure Tipps
 

httpdigest

Top Contributor
"clone" bedeutet, dass überhaupt erstmal eine lokale Kopie eines "remote Origins" gemacht wird und (wenn nicht "bare" gecloned wird) auch ein "checkout" eines Branches bzw. einer Reference stattfindet. Das bedeutet nicht, dass dieser lokale Code dann automatisch immer mit dem Remote synchronisiert wird.
"pull" ist quasi ein "fetch" und ein "merge" oder rebase.

Also: Am Anfang musst du einmal clonen, um überhaupt eine initialisierte Kopie des remote Repositories zu haben. Dann halt immer pullen, um den Stand vom remote Origin zu ziehen und pushen, um deinen lokalen Stand hochzuladen, damit du ihn wieder von woanders pullen (bzw. fetchen und rebasen/mergen) kannst.
 

KonradN

Super-Moderator
Mitarbeiter
Auf jedem System muss man erst einmal ein lokales Repository bekommen. Das funktioniert entweder über:
  • git init -> Du erzeugst (initialisierst) ein neues Repository. In der Regel wird dies in einem leeren Verzeichnis Deiner Wahl gemacht und der Aufruf wäre dann git init . (Es gibt da auch noch mehr Parameter, aber wir halten es einfach!)
  • git clone -> Du kopierst ein vorhandenes repository. Dabei erhältst Du nicht nur eine lokale Kopie sondern das andere Repository wird auch als remote Repository eingetragen. Das ist dann etwas wie git clone https://.....

Wenn Du dann ein lokales Repository hast und dieses mit einem remote Repository verbunden ist, dann kannst Du hier Dinge austauschen / verteilen. Dabei ist wichtig, die Ebenen zu verstehen.

Du hast:
  • ein aktuelles Arbeitsverzeichnis
  • eine staging Area
  • lokales Repository
  • remore Repository

Und da kannst Du dann Dinge hinzufügen und so.

Arbeitsverzeichnis --> staging Area: git add
staging Area -> lokales repository: git commit
lokales repository -> remote repository: git push

remote rep -> local rep: git fetch
remote rep -> local rep & work dir: git pull
local rep -> work dir: git checkout

Das nur so als minimaler Überblick. Generell kann ich nur Empfehlen, da einmal sich etwas einzulesen - es gibt zwei gute freie Bücher:

Und dann einmal etwas damit zu spielen. Gerade das mit der staging area ist interessant und man kann mit git diff schön schauen, wo was liegt.
 

Ähnliche Java Themen

Neue Themen


Oben