Come posso fare un push iniziale su un repository remoto con Git?


173

Ho letto innumerevoli tutorial e continuo a venire breve. Ecco cosa ho:

- Sto eseguendo RubyMine sul mio desktop di Windows
- Ho installato Git sul mio account di hosting WebFaction secondo le loro istruzioni
- Git sembra funzionare bene su entrambi i computer

Ecco cosa sto facendo:
1. Sul server:
         a. progetto mkdir
         b. git init
         c. git add.
         d. git commit <--- "niente da impegnare"
2. Sul client:
         a. Crea un nuovo progetto in RubyMine.
         b. "git init" nella directory superiore del progetto
         c. "Invia modifiche" al server <---- "impossibile inviare alcuni riferimenti a ...".

Quali passi mi mancano?

Risposte:


393

Sul server:

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

Sul cliente:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

Si noti che quando si aggiunge l'origine, è possibile utilizzare diversi formati e schemi. Ti consiglio di vedere cosa offre il tuo servizio di hosting.


L'unica cosa che ho cambiato, dato che sto lavorando su RubyMine, è che ho sostituito il tocco .gitignore con la creazione di un progetto Rails con i suoi 66 file predefiniti. Grazie mille!
Donald Hughes,

Complimenti per aver elencato i comandi. Ecco come ho impostato anche i repository remoti.
Dave Bacher,

5
Dovrei aggiungere che se vuoi che altre persone collaborino con te in questo repository, dovresti aggiungere --sharedalla fine del git --bare initcomando. Questo imposterà le autorizzazioni necessarie.
Josh Lindsey,

Grazie per questa risposta È molto utile avere cose come questa che riempiono le cose mancanti in quelli che sono ottimi libri su Git, ma non coprono ancora molto lavoro di conversione da CVS.
polpo,

21
Mi piace correre git push --set-upstream origin masterinvece git push origin masterla prima volta. Questo mi permette di digitare git pusho git pullinvece di git push origin masterogni volta. Qualunque cosa si adatti alle tue preferenze.
Rick Smith,

8

Puoi provare questo:

sul server:

aggiunta di un nuovo gruppo ai /etc/groupMi piace (esempio)

mygroup:1001:michael,nir

creare un nuovo repository git:

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)

sul cliente:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

(Grazie Josh Lindsey per il lato client)

dopo il client, eseguire sul server questo comando:

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

Se viene visualizzato questo errore dopo git pull:

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>

provare:

git push -u origin master

Aiuterà.


5

Devi aggiungere almeno un file al repository prima di eseguire il commit, ad es .gitignore.


Immagino che il modo in cui sto provando a usarlo sia quello di aggiungere i file inizialmente dal mio client, poiché è lì che scrivo il codice. È concettualmente fuori posto in git? Devo prima impegnarmi sul client e poi spingere sul server?
Donald Hughes,

5

Se il progetto non ha un ramo a monte, ovvero se è la prima volta che il repository remoto verrà a conoscenza del ramo creato nel repository locale, dovrebbe funzionare il seguente comando.

git push --set-upstream origin <branch-name>

3

@Josh Lindsey ha già risposto perfettamente bene. Ma voglio aggiungere alcune informazioni poiché uso spesso ssh.

Quindi basta cambiare:

git remote add origin youruser@yourserver.com:/path/to/my_project.git

per:

git remote add origin ssh://youruser@yourserver.com/path/to/my_project

Si noti che i due punti tra dominio e percorso non sono più presenti.


1

Devi impostare il repository remoto sul tuo client:

git remote add origin ssh://myserver.com/path/to/project

Ho eseguito quel comando, ma un "master di origine push git" risulta comunque in un "errore nel push di alcuni riferimenti". Ho provato a fare un "master git pull origin" e ho ricevuto un "impossibile trovare il master ref remoto".
Donald Hughes,

Non sono sicuro che faccia la differenza, ma i miei repository remoti sono creati git --bare initcome raccomandato da @Josh Lindsey.
Dave Bacher,

ho avuto lo stesso problema "Impossibile inviare alcuni riferimenti" ... cercando di spingere il ramo principale da un repository a uno che ho creato ... quindi ho notato che la fonte non ha un ramo principale - assicurati che il ramo che stai provando spingere esiste :)
Datum Geek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.