2010-02-25 17 views
106

He leído innumerables tutoriales y sigo quedándome corto. Esto es lo que tengo:¿Cómo realizo una inserción inicial en un repositorio remoto con Git?

- Estoy corriendo RubyMine en el escritorio de Windows
- He instalado Git en mi cuenta de alojamiento WebFaction por su instructions
- Git parece estar funcionando bien en ambas máquinas

Esto es lo que estoy haciendo:
1. En el servidor:
                  a. mkdir proyecto
                  b. git init
                  c. git add.
                  d. git commit < --- "nada que comprometerse"
2. El cliente:
                  a. Crear un nuevo proyecto en RubyMine.
                  b. "Git init" en la parte superior del directorio de proyecto
                  c. "Push changes" en el servidor < ---- "no se pudieron presionar algunos refs para ...".

¿Qué pasos me estoy perdiendo?

Respuesta

254

en el servidor:

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

en el cliente:

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 

Tenga en cuenta que cuando se agrega el origen , hay varios formatos y esquemas que puede usar. Te recomiendo que veas lo que ofrece tu servicio de alojamiento.

+0

Lo único que cambié, ya que estoy trabajando en RubyMine, es que reemplacé el toque .gitignore con la creación de un proyecto de rieles con sus 66 archivos predeterminados. ¡Muchas gracias! –

+0

Felicitaciones por enumerar los comandos. Así es como he configurado repositorios remotos también. –

+5

Debo agregar que si desea que otras personas colaboren con usted en este repositorio, debe agregar '--shared' al final del comando' git --bare init'. Esto configurará los permisos necesarios. –

4

Tienes que agregar at least one file al repositorio antes de cometer, p. .gitignore.

+0

Supongo que la forma en que trato de usarlo es agregar los archivos inicialmente de mi cliente, ya que es donde escribo el código. ¿Está conceptualmente fuera de lugar en git? ¿Tengo que comprometerme primero con el cliente y luego presionar al servidor? –

0

Es necesario configurar el repositorio remoto en el cliente:

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

Ejecuté ese comando, pero un "maestro de origen de git push" todavía resulta en un "error al presionar algunos refs". Intenté hacer un "maestro de origen de git pull" y recibí un "no pude encontrar maestro de referencia remoto". –

+0

No estoy seguro de si hace una diferencia, pero mis repositorios remotos se crean con 'git --bare init' como @Josh Lindsey recomienda. –

2

Puede probar esto:

en el servidor:

añadiendo nuevo grupo de /etc/group como (ejemplo)

mygroup:1001:michael,nir 

crear nuevo repositorio 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) 

en Cliente:

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 

(Gracias Josh Lindsey para el lado del cliente)

después de cliente, haga el servidor de estos comandos:

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

Si tiene este error después de 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> 

intento :

git push -u origin master 

Ayudará.

0

@Josh Lindsey ya respondió perfectamente bien. Pero quiero agregar algo de información ya que a menudo uso ssh.

Por lo tanto basta con cambiar:

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

a:

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

Tenga en cuenta que los dos puntos entre el dominio y la ruta ya no está allí.

1

Si su proyecto no tiene una rama ascendente, es decir, si esta es la primera vez que el repositorio remoto va a saber sobre la rama creada en su repositorio local, el siguiente comando debería funcionar.

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