mover repository local a file único remoto

Me disculpo si esto se ha preguntado en otro lugar y me lo perdí. He encontrado muchas preguntas y respuestas que están cerca de lo que estoy tratando de hacer, pero ninguna que encaje exactamente.

Tengo files y proyectos locales en un repository git local. Creé el repository hace unos meses como una forma de salvasave y rastrear mi propio trabajo. El rest de nuestra compañía usa SVN, así que soy el primero en usar git aquí. Lo configuré en mi directory personal en un server Linux. Este repository contiene muchos commits, twigs y tags que abarcan mi trabajo en los últimos meses.

Quiero mover ese repository a una location más accesible dentro del server Linux de nuestra empresa (no en mi directory personal) para que otros puedan clonar y trabajar con todo el repository (incluidas todas las tags, sucursales, historial, etc.) como mejor les parezca .

He pensado en copyr o mover toda la estructura de files, pero quiero que sea un file único, es decir, myRepo.git.

¿Cómo hago esto para que myRepo.git contenga toda la información que he comprometido de modo que cuando alguien clone este repository y ejecute 'gitk –all', ellos vean todas las twigs, tags, etc.?

Gracias por tu ayuda.

Puedes git clone --bare tu repo desde algún lugar donde otras personas puedan acceder a él.

El repository remoto de Git más básico no es más que un clon desnudo. Un clon desnudo significa que no tiene un checkout, es solo el contenido del directory .git . Tener un checkout significaría que la gente podría tratar de usar ese process de pago como su propio directory de trabajo de git y hacer cambios, lo que confundiría a otras personas que promocionan cambios en el repository.

Por ejemplo, crearé un nuevo repository en foo/ y confirmaré un file.

 $ git init foo Reinitialized existing Git repository in /Users/schwern/tmp/foo/.git/ $ rm -rf foo $ git init foo Initialized empty Git repository in /Users/schwern/tmp/foo/.git/ $ cd foo $ touch this $ git add this $ git ci -m 'First commit' [master (root-commit) 1a0bddf] First commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 this 

Luego haré un clon desnudo en bar/ (la clonación no tiene que suceder en una networking).

 $ git clone --bare foo bar $ ls HEAD config description hooks info objects packed-refs refs 

En lugar del pago, tiene el contenido del directory .git .

Ahora puedo clonar de eso.

 $ git clone bar baz Cloning into 'baz'... done. $ cd baz/ $ git log commit 1a0bddf415f48d71fa3aacc79c07c233d91ed4a9 (HEAD -> master, origin/master, origin/HEAD) Author: Michael G. Schwern <schwern@pobox.com> Date: Tue Feb 14 12:01:13 2017 -0800 First commit 

Eso es clonar en un sistema de files local. Git, por supuesto, clonará en una networking. Por lo general, usa ssh o https . git clone user@host/path realmente está ssh al host como user y copyndo lo que está en la path .

Por lo tanto, puede colocar su repository en cualquier lugar donde los demás tengan acceso ssh , como un server de desarrollo o el mismo host que tiene el server SVN.


Esa es la forma más sencilla de compartir tu repository de Git. Hay muchos más serveres Git más sofisticados que proporcionan acceso web y más protocolos. Todo, desde el escaso GitWeb hasta Gitlab , un clon de Github que puedes alojar localmente gratis.

Puedes leer más sobre esto en el capítulo de Pro Git sobre Servidores de Git .

Un repository de git completamente funcional no es un file único, y no hay forma de hacerlo. Dicho esto, copyr tu informe de trabajo tampoco es lo mejor que puedes hacer.

Si tener un único file es más importante que tener el repository completamente funcional, es decir, si no le importa si sus compañeros de trabajo pueden presionarlo, entonces puede crear un file de package.

 git bundle create /path/to/my/repo.bundle --all 

Sus compañeros de trabajo pueden clonar de esto, agregarlo como un control remoto, extraerlo o extraerlo de él … pero no pueden presionarlo (y tampoco lo pueden hacer; para agregarlo, deberían recrearlo).

Un repository compartido para clonar normalmente debería ser un repository simple. Esto es más o less equivalente a una copy del directory .git de su repository de trabajo. Si su repository existente está en / path / to / my / repo, puede crear un repository simple adecuado en / path / to / shanetworking / repo diciendo

 cd /path/to/shanetworking git clone --mirror /path/to/my/repo 

Tenga en count que utilicé --mirror lugar de --bare ; esto tiene que ver con cómo se copyn los refs y funcionará mejor si pretendes que esto se trate como el origen a partir de ahora.

Y, sin embargo, en este punto / path / to / my / repo todavía se considera el upstream. Para arreglar eso

 cd /path/to/shanetworking/repo git remote remove origin cd /path/to/my/repo git remote add origin /path/to/shanetworking/repo