¿Cómo hago un envío inicial a un repositorio remoto con Git?


173

He leído innumerables tutoriales y me quedo corto. Esto es lo que tengo:

- Estoy ejecutando RubyMine en mi escritorio de Windows
- He instalado Git en mi cuenta de alojamiento WebFaction según sus instrucciones
- Parece que Git funciona bien en ambas máquinas

Esto es lo que estoy haciendo:
1. En el servidor:
         a. proyecto mkdir
         b. git init
         c. git add.
         re. git commit <--- "nada que confirmar"
2. En el cliente:
         a. Crear nuevo proyecto en RubyMine.
         si. "git init" en el directorio superior del proyecto
         c. "Empujar cambios" al servidor <---- "no se pudieron enviar algunas referencias a ...".

¿Qué pasos me estoy perdiendo?

Respuestas:


393

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 youruser@yourserver.com:/path/to/my_project.git
git push origin master

Tenga en cuenta que cuando agrega el origen, hay varios formatos y esquemas que puede usar. Le recomiendo que vea lo que ofrece su servicio de alojamiento.


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

Felicitaciones por enumerar los comandos. Así es como también configuré repositorios remotos.
Dave Bacher

55
Debo agregar que si desea que otras personas colaboren con usted en este repositorio, debe agregarlo --sharedal final del git --bare initcomando. Esto configurará los permisos necesarios.
Josh Lindsey

Gracias por esta respuesta Es muy útil tener cosas como esta que completen las cosas que faltan en los que son muy buenos libros sobre git, pero que aún no cubren mucho trabajo de conversión de CVS.
octopusgrabbus

21
Me gusta correr en git push --set-upstream origin masterlugar de git push origin masterla primera vez. Esto me permite simplemente escribir git pusho en git pulllugar de git push origin mastercada vez. Lo que se ajuste a tus preferencias.
Rick Smith

8

Puedes probar esto:

en el servidor:

agregar un nuevo grupo a me /etc/groupgusta (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 el 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

(Gracias Josh Lindsey por el lado del cliente)

después del cliente, haga en el servidor 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>

tratar:

git push -u origin master

Ayudará.


5

Debe agregar al menos un archivo al repositorio antes de confirmar, por ejemplo .gitignore.


Supongo que la forma en que trato de usarlo es agregar los archivos inicialmente desde mi cliente, ya que ahí es donde escribo el código. ¿Está conceptualmente fuera de lugar en git? ¿Debo comprometerme primero con el cliente y luego enviarlo al servidor?
Donald Hughes

5

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

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

3

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

Por lo tanto solo cambia:

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

a:

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

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


1

Debe configurar el repositorio remoto en su cliente:

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

Ejecuté ese comando, pero un "maestro de origen de git push" todavía da como resultado un "error al empujar algunas referencias". Intenté hacer un "maestro de origen de extracción de git" y recibí un "no se pudo encontrar el maestro de referencia remoto".
Donald Hughes

No estoy seguro de si hace la diferencia, pero mis repositorios remotos se crean con git --bare init@Josh Lindsey recomienda.
Dave Bacher

Tuve el mismo problema "no pude empujar algunas referencias" ... tratando de empujar la rama maestra de un repositorio a uno que creé ... luego noté que la fuente no tiene una rama maestra - asegúrese de que la rama que está intentando para empujar existe :)
Datum Geek
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.