La migliore opzione
Probabilmente il modo più pulito, meno confuso e più sicuro per spingere nel tuo repository remoto non nudo, è quello di spingere verso i rami dedicati nel telecomando che rappresentano i rami del tuo laptop.
Diamo un'occhiata al caso più semplice e supponiamo che tu abbia un solo ramo in ciascun repository: master. Quando si passa al repository remoto dal proprio laptop, invece di premere master -> master, premere master -> laptop-master (o un nome simile). In questo modo il push non influisce sul ramo master attualmente estratto nel repository remoto. Per fare ciò dal laptop, il comando è piuttosto semplice:
git push origin master:laptop-master
Ciò significa che il ramo master locale verrà trasferito al ramo denominato "laptop-master" nel repository remoto. Nel tuo repository remoto, avrai un nuovo ramo chiamato "laptop-master" che puoi quindi unire nel tuo master remoto quando sei pronto.
Opzione alternativa
È anche possibile semplicemente inviare il comando master -> master, ma in genere non è consigliabile eseguire il push sul ramo attualmente estratto di un repository non bare, perché può essere fonte di confusione se non si capisce cosa sta succedendo. Questo perché il push su un ramo estratto non aggiorna l'albero di lavoro, quindi git status
il check-in nel ramo estratto che è stato inserito mostrerà esattamente le differenze opposte rispetto a quanto è stato spinto più di recente. Sarebbe particolarmente confuso se l'albero di lavoro fosse sporco prima che la spinta fosse fatta, il che è un grande motivo per cui questo non è raccomandato.
Se vuoi provare a premere semplicemente master -> master, il comando è solo:
git push origin
Ma quando torni al repository remoto, molto probabilmente vorrai fare un git reset --hard HEAD
per sincronizzare l'albero di lavoro con il contenuto che è stato inviato. Questo può essere pericoloso , perché se ci sono cambiamenti non impegnati nell'albero di lavoro remoto che si desidera mantenere, li cancellerà. Assicurati di sapere quali sono le conseguenze di questo prima di provarlo, o almeno prima fai un backup!
EDIT Da Git 2.3, puoi usare git push "push-to-deploy": https://github.com/blog/1957-git-2-3-has-been-released . Ma spingere verso un ramo separato e quindi l'unione è di solito meglio poiché fa un'unione effettiva (quindi funziona con cambiamenti non impegnati proprio come fa l'unione).