Sto usando git per tenere traccia di un progetto, e se è possibile, mi piacerebbe impostare le cose in modo che git gestisca tutta la mia staging del codice, posso avere un repository locale per i test, e poi spingere le modifiche al server con per farli vivere Tuttavia, nel tentativo di utilizzare le chiamate standard git push
, mi ritrovo con ramificazioni incoerenti e un terribile caos di storie contrastanti. C'è un modo per gestire la stadiazione usando git?Posso usare git per mantenere aggiornato un server remoto?
risposta
Bisogna in questo blog post un esempio di Git repo utilizzati per la stadiazione:
IDE => local Git repository => remote bare Git repository
=> Git repository with the live web application
Esso comporta un gancio post-aggiornamento sul lato repo nudo, per innescare l'aggiornamento repo sul vivo lato server web.
Il passaggio finale è definire lo script di hook "post-aggiornamento" sul repository nudo, che viene chiamato quando il repository nudo riceve i dati.
Per abilitare il hook "post-update", dobbiamo renderehooks/post-update
eseguibile o rinominarehooks/post-update.sample
ahooks/post-update
, a seconda della versione di Git.
In questo script, abbiamo semplicemente passare alla cartella dell'applicazione dal vivo, e avviare l'operazione di tiro:
#!/bin/sh
cd $HOME/example.org
unset GIT_DIR
git pull bare master
exec git-update-server-info
Il motivo non v'è un repo remoto nudo è perché è “sconsigliato” a fai un push in un repository con una directory di lavoro.
Anche se git è un sistema di controllo di versione distribuito, di solito è una buona idea avere un repository centrale (potrebbe essere uno --bare
). Semplifichera le cose.
Sì, ma come può essere utile gestire un ramo di gestione temporanea, un ramo di produzione e uno o più rami di sviluppo? – Thilo
Dovrei avere un repository centrale, quindi clonarlo sia localmente che sul server live, quindi SSH e fare pull manuali per aggiornare? Questo ha senso, ma sembra che ci dovrebbe essere una soluzione più elegante. – futuraprime
Un repository centrale nudo sul server live sarebbe sufficiente. Dal momento che stai ottenendo storie contrastanti, immagino che tu faccia dei cambiamenti nel sito di produzione. Se ciò ti sembra conveniente, le estrazioni manuali dovrebbero essere ok. Se puoi andare senza tali cambiamenti, usa il gancio post-aggiornamento come suggerito da VonC. –
- 1. Un modo più semplice per mantenere aggiornato un ramo git
- 2. Come posso ottenere un ramo di monitoraggio remoto per rimanere aggiornato con origini remote in un repository Git spoglio?
- 3. Come mantenere Subversion e un server remoto (via FTP) sincronizzati?
- 4. Approccio pratico per mantenere aggiornato jQuery?
- 5. git workflow per mantenere aggiornato il software open source modificato dall'utente?
- 6. Posso usare git per l'invio di incarichi?
- 7. Come posso spostare il mio repo git remoto su un altro repository git remoto?
- 8. Come posso allegare più URL a un singolo git remoto?
- 9. Cambiare repository remoto per un sottomodulo git
- 10. come copiare un repository locale al server remoto utilizzando git?
- 11. Come posso clonare un repository git e mantenere i telecomandi?
- 12. Estrarre automaticamente il server remoto con Git push?
- 13. git inizializzazione repo remoto
- 14. Come usare Git?
- 15. mysqldump da un server remoto
- 16. Git: come mantenere aggiornato il ramo di funzionalità locale con le modifiche apportate in dev?
- 17. Mantenere cambiamenti locali in un repo git
- 18. Caricamento su un server remoto
- 19. copia un repository git senza revisioni (senza .git e .gitingore) da un server remoto
- 20. come posso forzare cdn.rawgit.com usare il file aggiornato
- 21. Scoprire la versione di git sul server remoto
- 22. È possibile ottenere git per aggiornare automaticamente le note sul server remoto quando eseguo un git push/git pull
- 23. Git Push al server remoto si blocca utilizzando Cygwin
- 24. Git elimina il ramo remoto nel repository git TFS
- 25. Come mantenere sincronizzati due repository git?
- 26. come usare git tortoise senza un server (utente locale singolo)
- 27. Come copiare un ramo Git locale per un repo remoto
- 28. Flusso Git elimina il ramo sul server remoto?
- 29. Git - Sfoglia repository remoto
- 30. Git - Come unire un ramo remoto nel master remoto
Qual è il vantaggio del repository nudo? Nella misura in cui è scoraggiato spingersi in un albero di lavoro, non hai guadagnato nulla se non la complessità aggiungendo questo passaggio intermedio. Non li ho provati e non conosco bene Git, quindi se volessi elaborare altro sarebbe molto più utile – SamGoody
@SamGoody: in realtà, preferirei non usare il * terzo * repo per l'implementazione del sito web in diretta , ma il secondo * deve * essere nullo per rendere * sicuro che nessuna modifica locale interferisca con il fatto che tu spinga nuovi commit ad esso *. Vedi http://stackoverflow.com/questions/5490434/git-live-server-best-practices/5491039#5491039. Il gancio post-ricezione combinato con un archivio git (un tar da estrarre) è migliore. – VonC
Allo stato attuale il lavoro viene eseguito occasionalmente sul server live e quindi unito ai computer di sviluppo. (Ammesso che la nostra configurazione sia inusuale, è corretta per le nostre esigenze). Abbiamo bisogno che il server live abbia la possibilità di ricevere e inviare modifiche. Idealmente, quando viene premuto, le modifiche dovrebbero essere unite in [o un errore dovrebbe essere registrato]. L'archivio Git non sarebbe adatto. Questa soluzione sarebbe, ma perché non spingere direttamente? – SamGoody