Ecco lo scenario. Ho due macchine, "desktop" e "laptop".Come mantenere sincronizzati due repository git?
Sul tavolo faccio:
mkdir git_test
cd git_test
git init
dd if=/dev/urandom of=test.img bs=1k count=1000
git add test.img
git commit -m "Added first image"
Poi sul computer portatile che faccio:
git clone [USER]@desktop:/home/[USER]/git_test
cd git_test
dd if=/dev/urandom of=test2.img bs=1k count=1000
git add test2.img
git commit -m "Added second image"
poi voglio il repo git sul mio desktop a guardare come il repo git sul mio portatile. Sul computer portatile, ho emettere il seguente: git push origin maestro
Ma poi ho capito:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
Come faccio a mantenere queste due operazioni pronti contro termine in sincronia?
I messaggi di errore sembrano implicare che git abbia la funzionalità che desidero, ma per qualche motivo sembra essere un flusso di lavoro più avanzato. Ho sentito qualcuno dire una volta che non si può spingere verso la filiale in cui ci si trova attualmente, qualcuno può elaborarla come possibile soluzione? Non avrei alcun problema con una soluzione di questo tipo, cioè potrei lavorare su un certo ramo del mio portatile e un ramo diverso sul mio desktop, e quindi solo sincronizzarli in qualche modo in modo che siano identici.
Si prega di notare quanto segue!
Non voglio usare un repo centralizzato, come GitHub, per diversi motivi. Il primo è la sicurezza. Il secondo è la semplicità. Il terzo è che a causa delle circostanze in cui non entrerò qui, non posso contare di avere una connessione internet ad un server remoto, ho solo le mie due macchine collegate via LAN. Infine, voglio imparare come fare le cose nel modo in cui ho richiesto qui, per ottenere quella specifica conoscenza.
Inoltre, non voglio utilizzare un repository nudo, in quanto un repository nudo ha un mucchio di cruft nella directory principale. Questo è brutto e disordinato. L'intera ragione per cui mi sono mosso per uscire dalla sovversione è che git sembrava una soluzione molto più pulita e decentralizzata. Inoltre, ho alcune persone un po 'non tecniche che funzioneranno nella directory principale del desktop, saranno confuse dal cruft. La bellezza di git è (pensavo) che tutto si nasconda nelle cartelle .git. Edit: Apparentemente non ero abbastanza chiaro con questo punto. Immagina di avere una cartella "Documenti" con le seguenti sottocartelle: mydata1 e mydata2. Questo non è un esempio forzato, questo è esattamente il problema che sto cercando di affrontare. mydata1 dovrebbe contenere "test.img", e solo quel file, ma invece ha ora:
rami configurazione descrizione TESTA ganci informazioni oggetti arbitri
volevo essere in grado basta inserire cd in mydata1 e iniziare a modificare i file, ma invece devo provare a effettuare il cd attraverso i rami, o qualsiasi altra cosa anche solo per fare il lavoro. E avere questo tipo di struttura di directory per la sottocartella che si trovava in "documenti" è semplicemente irrealizzabile. Per favore, per favore non dirmi di fare le cose in questo modo. Per favore, rispondi alla domanda. Grazie.
Questi due punti sono per intero motivo per cui sto postando questa domanda qui.Per favore rispondi solo se hai una risposta a questa domanda. :) Grazie!!
il "cruft" a cui mi riferisco è il seguente: "configurazione dei rami descrizione HEAD aggancia gli oggetti info refs" Voglio solo/home/[Utente]/git_repo per contenere solo i file con cui lavoro. Inoltre: le cartelle .git sono nascoste. –
È possibile nascondere il repository. – nobar