Ricerca…


introduzione

Dopo aver modificato, messo in scena e eseguito il codice con Git, è necessario premere per rendere le modifiche disponibili per gli altri e per trasferire le modifiche locali al server di repository. Questo argomento spiegherà come spingere correttamente il codice usando Git.

Sintassi

  • git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]

Parametri

Parametro Dettagli
--vigore Sovrascrive il riferimento remoto in modo che corrisponda al riferimento locale. Può far sì che il repository remoto perda i commit, quindi utilizzalo con attenzione .
--verbose Esegui in modo verbale.
<Remote> Il repository remoto che è la destinazione dell'operazione push.
<Refspec> ... Specificare quale riferimento remoto aggiornare con quale riferimento o oggetto locale.

Osservazioni

Upstream e Downstream

In termini di controllo del codice sorgente, si è "a valle" quando si copia (clonazione, checkout, ecc.) Da un repository. Le informazioni scorrevano "a valle".

Quando apporti delle modifiche, di solito vuoi rispedirle "a monte" in modo che possano essere inserite in quel repository in modo che tutti quelli che utilizzano la stessa fonte lavorino con tutte le stesse modifiche. Questo è principalmente un problema sociale di come tutti possono coordinare il proprio lavoro piuttosto che un requisito tecnico del controllo del codice sorgente. Vuoi ottenere le tue modifiche nel progetto principale in modo da non tracciare linee di sviluppo divergenti.

A volte leggi i gestori di pacchetti o release (le persone, non lo strumento) che parlano di invio di modifiche a "upstream". Questo di solito significa che dovevano aggiustare le fonti originali in modo che potessero creare un pacchetto per il loro sistema. Non vogliono continuare a fare quei cambiamenti, quindi se li inviano "upstream" alla fonte originale, non dovrebbero avere a che fare con lo stesso problema nella prossima versione.

( Fonte )

Spingere

git push

spingerà il tuo codice al tuo attuale esistente. A seconda della configurazione push, invierà il codice dal ramo corrente (predefinito in Git 2.x) o da tutti i rami (predefinito in Git 1.x).

Specifica repository remoto

Quando si lavora con git, può essere utile avere più repository remoti. Per specificare un repository remoto su cui eseguire il push, basta aggiungere il suo nome al comando.

git push origin

Specifica succursale

Per feature_x a un ramo specifico, ad esempio feature_x :

git push origin feature_x

Imposta il ramo di monitoraggio remoto

A meno che il ramo su cui si sta lavorando provenga originariamente da un repository remoto, semplicemente usando git push non funzionerà la prima volta. È necessario eseguire il seguente comando per comunicare a git di spingere il ramo corrente su una combinazione specifica di remoto / ramo

git push --set-upstream origin master

Qui, master è il nome del ramo origin remota. Puoi usare -u come una scorciatoia per --set-upstream .


Spingendo su un nuovo repository

Per inviare a un repository che non hai ancora creato, o è vuoto:

  1. Crea il repository su GitHub (se applicabile)
  2. Copia l'url che ti è stata data, nel modulo https://github.com/USERNAME/REPO_NAME.git
  3. Vai al tuo repository locale ed esegui git remote add origin URL
    • Per verificare che sia stato aggiunto, esegui git remote -v
  4. Esegui il git push origin master

Il tuo codice dovrebbe ora essere su GitHub

Per ulteriori informazioni, vedere Aggiungere un repository remoto


Spiegazione

Il codice push significa che git analizzerà le differenze dei tuoi commit locali e remoti e li invierà per essere scritti a monte. Quando push riesce, il tuo repository locale e il tuo repository remoto sono sincronizzati e gli altri utenti possono vedere i tuoi commit.

Per ulteriori dettagli sui concetti di "upstream" e "downstream", vedere Note .

Forza Spinta

A volte, quando le modifiche locali sono incompatibili con le modifiche remote (ovvero, quando non è possibile inoltrare rapidamente il ramo remoto o il ramo remoto non è un antenato diretto del ramo locale), l'unico modo per inviare le modifiche è un push forzato .

git push -f

o

git push --force

Note importanti

Questo sovrascriverà eventuali modifiche remote e il tuo telecomando corrisponderà al tuo locale.

Attenzione: l'utilizzo di questo comando può causare la perdita di commit da parte del repository remoto. Inoltre, si sconsiglia vivamente di fare un push forzato se si condivide questo repository remoto con altri, poiché la loro cronologia manterrà ogni commit sovrascritto, quindi il loro lavoro non sarà sincronizzato con il repository remoto.

Come regola generale, forza la spinta quando:

  • Nessuno tranne te ha tirato le modifiche che stai cercando di sovrascrivere
  • Puoi costringere tutti a clonare una nuova copia dopo la spinta forzata e fare in modo che tutti applichino le loro modifiche (la gente potrebbe odiarti per questo).

Spingere un oggetto specifico su un ramo remoto

Sintassi generale

git push <remotename> <object>:<remotebranchname>

Esempio

git push origin master:wip-yourname

Spingerà il ramo master sul ramo di origine wip-yourname (il più delle volte, il repository da cui sei stato clonato).


Elimina il ramo remoto

Cancellare il ramo remoto equivale a spingere un oggetto vuoto su di esso.

git push <remotename> :<remotebranchname>

Esempio

git push origin :wip-yourname

Eliminerà il ramo remoto wip-yourname

Invece di usare i due punti, puoi anche usare il flag --delete, che in alcuni casi è più leggibile.

Esempio

git push origin --delete wip-yourname

Spingere un singolo commit

Se si dispone di un singolo commit nel ramo che si desidera inviare a un telecomando senza aggiungere altro, è possibile utilizzare quanto segue

git push <remotename> <commit SHA>:<remotebranchname>

Esempio

Supponendo una storia git come questa

eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local

per inviare solo commit 347d700 a master remoto utilizzare il seguente comando

git push origin 347d700:master

Modifica del comportamento di push predefinito

Attuale aggiorna il ramo sul repository remoto che condivide un nome con il ramo di lavoro corrente.

git config push.default current

Semplice spinge al ramo upstream, ma non funzionerà se il ramo upstream è chiamato qualcos'altro.

git config push.default simple

Upstream spinge al ramo upstream, indipendentemente da come viene chiamato.

git config push.default upstream

Corrispondenza spinge tutti i rami che corrispondono al git config locale e remoto push.default upstream

Dopo aver impostato lo stile preferito, utilizzare

git push 

per aggiornare il repository remoto.

Spingere i tag

git push --tags

Spinge tutti i git tags nel repository locale che non sono in quello remoto.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow