Wie mache ich einen ersten Push in ein Remote-Repository mit Git?

173

Ich habe unzählige Tutorials gelesen und komme immer wieder zu kurz. Folgendes habe ich:

- Ich führe RubyMine auf meinem Windows-Desktop aus.
- Ich habe Git gemäß den Anweisungen auf meinem WebFaction-Hosting-Konto installiert.
- Git scheint auf beiden Computern einwandfrei zu funktionieren

Folgendes mache ich:
1. Auf dem Server:
         a. mkdir- Projekt
         b. git init
         c. git hinzufügen.
         d. git commit <--- "nichts festzuschreiben"
2. Auf dem Client:
         a. Erstellen Sie ein neues Projekt in RubyMine.
         b. "git init" im obersten Verzeichnis des Projekts
         c. "Push-Änderungen" an Server <---- "Einige Refs konnten nicht an ... gesendet werden".

Welche Schritte fehlen mir?

Donald Hughes
quelle

Antworten:

393

Auf dem Server:

mkdir my_project.git
cd my_project.git
git --bare init

Auf Client:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin [email protected]:/path/to/my_project.git
git push origin master

Beachten Sie, dass Sie beim Hinzufügen des Ursprungs verschiedene Formate und Schemas verwenden können. Ich empfehle Ihnen zu sehen, was Ihr Hosting-Service bietet.

Josh Lindsey
quelle
Das einzige, was ich geändert habe, seit ich mit RubyMine arbeite, ist, dass ich den Touch .gitignore durch das Erstellen eines Rails-Projekts mit seinen 66 Standarddateien ersetzt habe. Vielen Dank!
Donald Hughes
Ein großes Lob für die Auflistung der Befehle. So habe ich auch Remote-Repositorys eingerichtet.
Dave Bacher
5
Ich sollte hinzufügen, dass Sie am --sharedEnde des git --bare initBefehls hinzufügen sollten, wenn andere Personen bei diesem Repo mit Ihnen zusammenarbeiten sollen . Dadurch werden die erforderlichen Berechtigungen eingerichtet.
Josh Lindsey
Danke für diese Antwort. Es ist sehr hilfreich, solche Dinge zu haben, die die fehlenden Dinge in sehr guten Büchern über Git ausfüllen, aber immer noch nicht viel Konvertierungsarbeit von CVS abdecken.
Octopusgrabbus
21
Ich laufe git push --set-upstream origin masterlieber anstatt git push origin masterbeim ersten Mal. Dadurch kann ich einfach git pushoder git pullstatt git push origin masterjedes Mal tippen . Was auch immer Ihren Vorlieben entspricht.
Rick Smith
8

Sie können dies versuchen:

auf dem Server:

Hinzufügen einer neuen Gruppe zu /etc/grouplike (Beispiel)

mygroup:1001:michael,nir

Neues Git-Repository erstellen:

mkdir /srv/git
cd /srv/git
mkdir project_dir
cd project_dir
git --bare init (initial git repository )
chgrp -R mygroup objects/ refs/ (change owner of directory )
chmod -R g+w objects/ refs/ (give permission write)

auf Client:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin [email protected]:/path/to/my_project.git
git push origin master

(Danke Josh Lindsey für die Kundenseite)

Führen Sie nach dem Client auf dem Server die folgenden Befehle aus:

cd /srv/git/project_dir
chmod -R g+w objects/ refs/

Wenn dieser Fehler nach dem Git Pull auftritt:

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch>

Versuchen:

git push -u origin master

Es wird helfen.

Michael
quelle
5

Sie müssen vor dem Festschreiben mindestens eine Datei zum Repository hinzufügen , z .gitignore.

Benjamin Wohlwend
quelle
Ich denke, ich versuche, die Dateien zunächst von meinem Client hinzuzufügen, da ich dort den Code schreibe. Ist das in git konzeptionell fehl am Platz? Muss ich mich zuerst auf dem Client festschreiben und dann auf den Server übertragen?
Donald Hughes
5

Wenn Ihr Projekt keinen Upstream-Zweig hat, dh wenn dies das erste Mal ist, dass das Remote-Repository über den in Ihrem lokalen Repository erstellten Zweig informiert wird, sollte der folgende Befehl funktionieren.

git push --set-upstream origin <branch-name>
Maria
quelle
3

@ Josh Lindsey hat schon ganz gut geantwortet. Aber ich möchte einige Informationen hinzufügen, da ich oft ssh benutze.

Deshalb einfach ändern:

git remote add origin [email protected]:/path/to/my_project.git

zu:

git remote add origin ssh://[email protected]/path/to/my_project

Beachten Sie, dass der Doppelpunkt zwischen Domäne und Pfad nicht mehr vorhanden ist.

JWo
quelle
1

Sie müssen das Remote-Repository auf Ihrem Client einrichten:

git remote add origin ssh://myserver.com/path/to/project
Dave Bacher
quelle
Ich habe diesen Befehl ausgeführt, aber ein "Git Push Origin Master" führt immer noch zu einem "Fehler beim Push einiger Refs". Ich habe versucht, einen "Git Pull Origin Master" zu erstellen und habe einen "Remote Ref Master konnte nicht gefunden werden" erhalten.
Donald Hughes
Ich bin nicht sicher, ob es einen Unterschied macht, aber meine Remote-Repositorys werden mit den git --bare initvon @Josh Lindsey empfohlenen erstellt.
Dave Bacher
Ich hatte das gleiche Problem "Einige Refs konnten nicht gepusht werden" ... beim Versuch, den Hauptzweig von einem Repo auf einen von mir erstellten zu verschieben ... dann bemerkte ich, dass die Quelle keinen Hauptzweig hat - stellen Sie sicher, dass der Zweig, den Sie versuchen zu pushen existiert :)
Datum Geek