Flujo de trabajo de Git apropiado para la tesis con el server involucrado

Estoy empezando a usar git para mi tesis y mi pregunta es cuál será el flujo de trabajo apropiado para mí. Aquí mis requisitos previos:

Hardware utilizado:

  • Laptop A usada en casa
  • Laptop B una netbook utilizada cuando estoy en la biblioteca
  • Computadora de escritorio en la universidad
  • Espacio de files privado en un server de mi universidad que también ejecuta git (preinstalado por la universidad, lindo, ¿no?)

Lo que hice hasta que sé es escribir mi tesis con LaTeX y copyrla entre todas estas computadoras a mano. A menudo ocurre que estoy escribiendo algo. en una máquina, pero luego tengo un día libre y no sé dónde está mi versión más reciente. En estos casos utilicé diff para comparar y averiguar qué documento es el más reciente.

Un poco de lectura sobre git me mostró que me ayudaría mucho. Pensé en algo así como tener un repository central en el server y empujar / tirar desde / hacia él con todas las computadoras.

Ahora he creado un repository simple en el server y he creado repositorys locales (por git init ) en cada una de las computadoras.

Pero no estoy seguro de si esto era correcto: ahora todas las computadoras están sincronizadas, por lo que todos los repos locales contienen los mismos files / versiones. He empujado al repository desnudo en el server de mi computadora portátil A.

Traté de sacar del repository del server a mi computadora de escritorio:

 git pull origin master 

salida:

 * branch master -> FETCH_HEAD Merge made by the 'recursive' strategy. 

Eso creó una sucursal en mi computadora de escritorio, si lo entendí correctamente. ¿Debo aplicar más operaciones después de esto antes de comenzar a trabajar en la PC de escritorio?

Otro bash fue:

 git pull origin master:master 

salida:

  ! [rejected] master -> master (non-fast-forward) 

Hasta donde lo leí en el libro de Git es un comportamiento esperado, aunque no puedo decir por qué. ¿Esto no evitaría que se cree una nueva twig cada vez que tire?

De todos modos, ahora leo muchos posts aquí en stackoverflow y también algún capítulo en el libro de git oficial, pero debo decir, mi cabeza está zumbando un poco.

No sé si el flujo de trabajo que comencé aquí es correcto para lo que quiero lograr. ¿Tal vez no debería usar el git del server sino solo clonarlo en el espacio de files? ¿Podría alguien ponerme en el path correcto?

Muchas gracias.

Después de crear su repository simple en el server, en lugar de ejecutar git init en cada una de las computadoras, debe clonar desde el repository simple en el server. Por ejemplo, si usa el protocolo ssh, puede hacer algo como esto en cada una de las otras computadoras:

 git clone ssh://username@servername:/path/to/bare/repo.git 

Eso establecerá automáticamente su control remoto de origen en el server con el repository desnudo. A continuación, puede realizar todos los cambios que desee en su computadora local, confirmar sus cambios a nivel local con algo como esto:

 git add . git commit -m 'Made some changes' 

Entonces lo haces:

 git pull 

cuando quieres actualizar, y:

 git push 

cuando desee enviar los cambios que ha realizado localmente al server.

No, no crea repositorys en cada computadora. Usted crea el repository en una computadora, lo envía al repository central y luego clona de allí a los demás.

La solución más fácil:

 Laptop A: leave alone Laptop B: change name of existing git repository to retain it as a backup. Then `git clone <url>` from central repo Desktop: same as laptop B 

Una vez que esté seguro de que tiene el repository clonado y de que los files son correctos, puede eliminar el repository original renombrado.

Su flujo de trabajo desde ese momento siempre que se mude a una computadora:

 git pull (to receive any changes you pushed while on a different computer. If it exits silently, there were no changes) work, work, work git add . git commit -m <comment> git push