En primer lugar, el cuadro grande: Estoy tratando de escribir un post-git recibir guión para un servidor Redmine/Gitolite estoy corriendo. De acuerdo con diversas recomendaciones, estoy creando un repositorio desnudo y local para Redmine para leer, y yo estoy creación de un script de post-recepción en Gitolite para empujar cambios en el repositorio Redmine.Git Fetch no funciona con repo desnuda, pero git pull trabaja en repo normales
Sin embargo, estoy muy noobish con Git, así que soy incapaz de siquiera hacer una tarea simple aquí> _ <. Creo que si resuelvo esto, debería poder escribir el guión anterior. Después de configurar mi informe de prueba, he creado dos repositorios como prueba.
(El "Repo central" es un repositorio Gitolite en git @ localhost: prueba)
cd /tmp
mkdir /tmp/test
$ git clone [email protected]:testing
$ git clone [email protected]:testing testing2
$ git clone [email protected]:testing --bare
Ahora en que funciono ls:
$ ls
testing testing2 testing.git
Ahora, puedo cambiar el archivo de prueba en el interior de la prueba2, y luego empuja los cambios al repositorio central.
$ cd testing2
$ echo 'testline' >> test && git commit --allow-empty-message -a -m '' && git push
Como esperaba, si ejecuto "git pull" en la carpeta "testing", todo funciona como se esperaba.
$ cd testing
$ git pull
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From localhost:testing
3242dba..a1ca5ba master -> origin/master
Updating 3242dba..a1ca5ba
Fast-forward
test | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
$ diff ./test ../testing2/test
$
como se muestra con la última "diff", el directorio "prueba" y el trabajo directorio "testing2" exactamente como se esperaba. El comando "git pull" sincroniza los dos directorios.
Sin embargo, si copio en testing.git (alias: el repositorio desnudo), un git fetch/git reset --soft no actualiza el repo desnudo a la última versión.
$ ls
branches config description HEAD hooks info objects packed-refs refs
$ git fetch
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From localhost:testing
* branch HEAD -> FETCH_HEAD
$ git reset --soft
$ cd ..
$ git clone ./testing.git testing3
Cloning into testing3...
done.
$ cd testing3
$ diff test ../testing2/test
5a6
> testline
Como se puede ver en el ejemplo anterior, el repositorio desnudo no pudieron recibir información actualizada, y no es de alguna manera una diferencia entre los dos archivos. ¿Qué hice mal?
Gracias de antemano
Gracias. Muchos problemas parecen deberse a mi falta de comprensión de las ramificaciones ... así que me aseguraré de leer sobre ello. – Dragontamer5788
Si desea recuperar estos con regularidad, debe considerar: '' git config remote.origin.fetch + refs/heads/*: refs/heads/* '', que le permitirá escribir '' git fetch '' sincronizar sus ramas con el control remoto. Tenga en cuenta que esto solo tiene sentido en un repositorio vacío donde no se supone que las ramas locales deben editarse. – vaab
@ColinDBennet gracias por la edición :) – VonC