Cómo convertir un directorio no vacío existente en un directorio de trabajo de Git y enviar archivos a un repositorio remoto

644
  1. Tengo un directorio no vacío (por ejemplo, / etc / something) con archivos que no se pueden renombrar, mover o eliminar.

  2. Quiero verificar este directorio en git en su lugar.

  3. Quiero poder llevar el estado de este repositorio a un repositorio remoto (en otra máquina) usando "git push" o algo similar.

Esto es trivial usando Subversion (actualmente lo hacemos usando Subversion) usando:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

¿Cuál es el equivalente de git?

¿Puedo "git clone" en un directorio vacío y simplemente mover el directorio .git y hacer que todo funcione?

HMW
fuente
55
Tal vez simplemente no lo entiendo, pero ¿no puedes simplemente correr git initdentro del directorio local?
Philipp
¿Quiere decir que tiene un repositorio en otro lugar y desea agregar a ese repositorio todo el contenido de este otro directorio que no es un repositorio? ¿O simplemente está tratando de crear un nuevo repositorio en ese directorio?
Cascabel
Varias de las respuestas mencionan github, pero la pregunta en sí es sobre git. github no es git, y no es el centro del universo git.
vfclists

Respuestas:

1056

Dado que ha configurado un demonio git <url>y un repositorio vacío:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master
abyx
fuente
12
Las instrucciones de abyx parecen funcionar. ¿Ahora ejecuto: git config branch.master.remote originy git config branch.master.merge refs/heads/master lo que terminaré será exactamente igual que si clonara el repositorio remoto? es decir, git pully git pushse acaba de trabajar ?
HMW
35
Esto funcionó para mí también. Primero tuve que crear un proyecto AppNameen GitHub. No estaba claro para mí exactamente con qué <url>medios. Entonces, para aquellos que tienen la misma pregunta, simplemente usamos GitHub.com, no estamos ejecutando nuestro repositorio, y luego lo <url>que se usó en la 5ta línea se parecía a esto:https://github.com/CompanyName/AppName
Bart
12
Si está configurando un repositorio que no está en GitHub, asegúrese de usar 'git --bare init' para configurar el repositorio remoto vacío , y no 'git init' (como lo hice) o la inserción fallará.
jdusbabek
3
Solo quería agregar, que no podía presionar hasta que hice un: git pull --rebase
Artemix el
66
Si git rechaza porque el control remoto contiene algunos cambios menores (.README, .gitignore, etc.), intente git pull origin master --allow-unrelated-historieshacer una fusión.
karlisup
80

Así es como lo hago. He agregado una explicación para entender qué diablos está pasando.

Inicializar repositorio local

  • primero inicialice Git con

    git init

  • Agregue todos los archivos para el control de versiones con

    git add.

  • Crea un compromiso con el mensaje que elijas

    git commit -m 'AddingBaseCode'

Inicializar repositorio remoto

  • Cree un proyecto en GitHub y copie la URL de su proyecto. Como se muestra abajo:

    ingrese la descripción de la imagen aquí

Vincular repositorio remoto con repositorio local

  • Ahora use la URL copiada para vincular su repositorio local con el repositorio remoto de GitHub. Cuando clona un repositorio con git clone, crea automáticamente una conexión remota llamada origen que apunta hacia el repositorio clonado. El comando remoto se usa para administrar un conjunto de repositorios rastreados.

    git remote add origin https://github.com/hiteshsahu/Hassium-Word.git

Sincronizar

  • Ahora necesitamos fusionar el código local con el código remoto. Este paso es crítico; de lo contrario, no podremos insertar código en GitHub. Debe llamar a 'git pull' antes de presionar su código.

    git pull origin master --permitir historias no relacionadas

Confirma tu código

  • Finalmente empuje todos los cambios en GitHub

    git push -u maestro de origen

Hitesh Sahu
fuente
1
Ejecuté "git pull" como se describe en esta publicación y obtuve un error. Continué con el "git push" que se ha aceptado y cuando voy al Servidor Bonobo Git, ahora puedo ver el cambio. Gracias por esta publicación con explicaciones claras sobre el comando GIT.
schlebe
¿Qué significa esto: "y copie la URL de su proyecto y copie la URL del proyecto". ¿Es esto un error de mecanografía, o está tratando de hablar sobre dos URL diferentes o?
gwideman el
Eso es un error de tipografía, simplemente copie la URL del proyecto como se muestra en la captura de pantalla
Hitesh Sahu
2
Esta es la respuesta correcta y debe ser la aceptada. A la respuesta aceptada le falta el paso "Sincronizar".
Ilan
28

Aquí está mi solución:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
csomakk
fuente
Buena solución cuando configura repositorio remoto con .gitignore&README.dm
Hattori Hanzō
12

En caso de que el repositorio remoto no esté vacío (este es el caso si está utilizando IBM DevOps en hub.jazz.net), entonces debe usar la siguiente secuencia:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

EDITAR el 30 de enero 17: Por favor, vea los comentarios a continuación, ¡asegúrese de estar en el repositorio correcto!

Romeo Kienzler
fuente
Los comandos anteriores borraron todas mis compilaciones existentes :( Tenga cuidado antes de realizar los pasos anteriores
Selenium Framework
7

Cuando es un repositorio de github no vacío, como .gitignore y licencia

Use pull --allow-no-related-historories y push --force-with-lease

Usar comandos

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease
Sebastian Oscar Lopez
fuente
1
Necesitaba modificar esa última declaración para que sea más comogit push -u origin master --force-with-lease
cfont
2

La forma más sencilla de hacer esto que me parece útil es la siguiente.

Puede que esta no sea la forma oficial, pero funciona bien.

Suponga que tiene un proyecto llamado " XYZ" en su PC. Ahora quieres hacer un repositorio git de este proyecto en github y usar sus funcionalidades.

Paso 1 : ve a " www.github.com"

Paso 2 : crea un repositorio con un " README.md" archivo (nómbralo como quieras)

Paso 3 : clona el repositorio en tu PC.

Paso 4 : en la carpeta clonada obtendrá dos cosas: " .git" carpeta y un " README.md" archivo. Copie estos dos en su carpeta de proyecto " XYZ".

Paso 5 : elimine el repositorio clonado.

Paso 6 : agregue, confirme y envíe todos los archivos y carpetas de su proyecto.

Ahora, puedes usar tu proyecto " XYZ" como un repositorio git.

Genio
fuente
0

Tuve un problema similar. Creé un nuevo repositorio, NO EN EL DIRECTORIO QUE QUERÍA HACER UN REPOSITORIO . Luego copié los archivos creados en el directorio que quería hacer un repositorio. Luego abra un repositorio existente usando el directorio en el que acabo de copiar los archivos.

NOTA: Utilicé el escritorio de github para hacer y abrir el repositorio existente.

tpage
fuente
0

Aquí está mi solución si creó el repositorio con algún valor predeterminado readme fileolicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
Harish Karthick
fuente