Git(Eclipse) und Github - rejected - non-fast-forward

DefconDev

Commander
Registriert
Jan. 2008
Beiträge
2.608
Ich bin absolut neu in Git und Github.

Habe mir einen Account auf github erstellt. Dann ein Repository namens "Hades" erstellt.
Danach gehe ich bei Eclipse auf mein gewünschtes vorhandenes Projekt, auch "Hades" und comitte das.

Anschließend muss man noch den https link einsetzen und die logindaten bei Eclipse von github einfügen.
Dann erscheint folgender Fehler oder eher gesagt Hinweis:
master -> master[rejected - non-fast-forward]

Eigentlich möchte ich nur ein vorhandenes Java Project nur mit Github synchronisieren.
 
Erst pullen, dann pushen. Wenn bereits lokale Änderungen vorliegen, musst du diese stashen, bevor du pullen kannst.
 
Weil beim Zusammenbringen der Inhalte beider Seiten Konflikte auftreten können und die kann der Server ja schlecht alleine auflösen. Daher musst du das bei dir lokal tun (mergen) um danach eine korrekte, vereinigte Version pushen zu können.

Auch muss die Historie (u.a. die Reihenfolge der Commits), die bereits auf dem Server gelandet ist (kann ja mehrere Leute geben, die daran arbeiten), weiterhin bestehen bleiben. Sonst haben die Leute mit ihren ausgecheckten Ständen ein Problem. Es gibt den Parameter --force für push, um das Problem zu ignorieren. Davon rate ich aber dringend ab, wenn du nicht weißt, was du tust.
 
Zuletzt bearbeitet:
OK, danke dir für die Ausführliche Erklärung.

Eine andere Frage, jetzt hat Github alle meine lokalen Projekte in den selben Ordner geschoben. Also alle meine Projekte die ich "geteilt" habe in Eclipse sind alle im selben reporisity gelandet. Wie kann man das trennen, hatte eigentlich gedacht der https link sagt dem github in welche reposority das soll.
 
Du musst auf github für jedes deiner Projekte ein Repo erstellen. Dann musst du in jedem deiner Projektordner folgende Befehle ausführen, um die Repos zu füllen
Code:
git init
git remote add origin <github repo url>
git fetch (bin mir nicht sicher, ob es nötig ist, aber schadet nicht)
git add .
git commit -m "Initial import (hier kannst du natürlich schreiben, was du willst)"
git push -u origin master
Alles aus dem Kopf, also ungetestet, aber müsste so hinkommen. Solltest du das über die Oberfläche machen wollen, bin ich nicht der richtige Ansprechpartner. Da heißen manche Punkte seltsam, umso mehr wenn es auf Deutsch ist. Aber vielleicht schaffst du ja die Transferleistung. :)
 
EGIT benutze ich in Eclipse.

Generell empfiehlt es sich mit einer GUI zu arbeiten oder lieber die Powershell, wenn man in Betracht zieht das für den Beruf zu erlernen?
 
Meine Meinung ist da klar pro Konsole. Umso mehr, wenn man es erst erlernt. Tools verschleiern gern, was eigentlich vor sich geht und wenn es richtig klemmt, muss man meistens sowieso auf die Konsole.

Die Konsole ist auch in der Kommunikation (sowohl als Helfer als auch Hilfesuchender) der kleinste gemeinsame Nenner. Ich hätte dir die obigen Befehle nicht in eGit beschreiben wollen. Zum einen habe ich das seit Jahren nicht mehr benutzt und zum anderen habe ich vielleicht gar kein Eclipse installiert. Andersherum würde es dir nichts helfen, wenn ich dir beschreiben könnte, wie du das Problem mit SourceTree lösen könntest, weil du vielleicht Linux hast oder eben ein anderes Tool (in dem Fall eGit benutzt).
Wenn du mal Probleme mit git hast und anfängst zu googeln, stößt du auf haufenweise StackOverflow-Seiten wo eben git-Konsolenkommandos stehen, um die Probleme zu lösen. Nur mit viel Glück (oder einem ausreichend banalen Problem) findest du eine Anleitung für das von dir gewählte Tool. Dazu ist die Vielfalt dann doch einfach zu groß.

Wenn es eine Oberfläche sein muss, finde ich SourceTree ganz akzeptabel. Gibt es leider nicht für Linux, aber ich würde es so oder so nicht benutzen. Wenn man einmal fit ist auf Konsole, gibt es quasi keinen Grund (außer man ist ein langsamer Tipper) etwas anderes zu benutzen.

Viele meiner Kollegen schwören auf SourceTree. Aber dreimal darfst du raten, wer gerufen wird, wenn was klemmt. Und wenn ich da ankomme, habe ich keine Lust die Lösung in SourceTree herauszufinden. Aber da wurde ja sinnvollerweise ein Knopf zum Öffnen einer Konsole eingebaut. :P
 
Zuletzt bearbeitet:
Wieder mal vielen Dank für deine ausführliche Antwort.

Ich glaube die Konsole wird dann mein erster Ansprechpartner in Zukunft werden.
 
Ich möchte an der Stelle noch sagen, dass wenn das Repo in eclipse einmalig korrekt eingerichtet wurde, es total easy ist in eclipse damit zu arbeiten. Man hat auch einen tollen Überblick über die Änderungen und kann ältere Stände vergleichen oder wiederherstellen was über die Konsole eher mühsam ist.
Wenn du ein Github Repo erstellt hast kannst du in eclipse sogar auf Project - Import - from Git wählen. Dort musst du nur deine Daten hinterlegen und eclipse regelt den Rest für dich. Ist also nicht so schwer wie es hier vielleicht rüberkam.

Edit:

Der genaue Weg in eclipse für neues Projekt:
File -> Import -> Projects from Git -> Github
 
Zuletzt bearbeitet: (Korrektur)
Zurück
Oben