Vorrei sapere se il mio repository locale è aggiornato (e in caso contrario, idealmente, vorrei vedere le modifiche).
Come posso verificarlo senza fare git fetch
o git pull
?
Vorrei sapere se il mio repository locale è aggiornato (e in caso contrario, idealmente, vorrei vedere le modifiche).
Come posso verificarlo senza fare git fetch
o git pull
?
Risposte:
Prova git fetch --dry-run
Il manuale ( git help fetch
) dice:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
non si vede niente?
--all
?
git pull
è più o meno equivalente a a git fetch && git merge
. Se in qualsiasi momento hai eseguito il recupero senza --dry-run
, allora hai già recuperato le cose localmente.
git remote show origin
Risultato:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
Primo utilizzo git remote update
, per aggiornare i tuoi ref del telecomando. Quindi puoi fare una delle diverse cose, come ad esempio:
git status -uno
ti dirà se il ramo che stai monitorando è avanti, indietro o è divergente. Se non dice nulla, locale e remoto sono la stessa cosa. Risultato del campione:Sul ramo DEV
Il tuo ramo è dietro 'origine / DEV' di 7 commit e può essere fatto avanzare rapidamente.
(usa "git pull" per aggiornare il tuo ramo locale)
git show-branch *master
ti mostrerà i commit in tutti i rami i cui nomi terminano con "master" (ad esempio master e origin / master).Se usi -v
con git remote update ( git remote -v update
) puoi vedere quali rami sono stati aggiornati, quindi non hai davvero bisogno di ulteriori comandi.
git remote update ; git status -uno
risolto. git fetch --dry-run
non ha dato alcun output anche nei casi in cui il locale era dietro il telecomando.
puoi utilizzare git status -uno
per verificare se la tua filiale locale è aggiornata con quella di origine.
git remote update ; git status -uno
fatto il trucco! Non ha git fetch --dry-run
dato output quando me lo aspettavo (e git pull
avrebbe tirato le cose).
Non proprio, ma non vedo come git fetch
potrebbe ferire perché non cambierà nessuno dei tuoi rami locali.
Un'altra alternativa è visualizzare lo stato del ramo remoto usando
git show-branch remote/branch
per usarlo come confronto che potresti vedere git show-branch *branch
per vedere il ramo in tutti i telecomandi oltre che nel tuo repository! controlla questa risposta per ulteriori https://stackoverflow.com/a/3278427/2711378
Dovrai emettere due comandi:
È necessario eseguire git fetch
prima di poter confrontare il proprio repository locale con i file sul server remoto.
Questo comando aggiorna solo i rami del monitoraggio remoto e non influirà sul tuo albero di lavoro finché non chiami git merge
o git pull
.
Per vedere la differenza tra il tuo ramo locale e il tuo ramo di tracciamento remoto una volta scaricato puoi usare git diff o git cherry come spiegato qui.
Questo è impossibile senza usare git fetch
o git pull
. Come puoi sapere se il repository è "aggiornato" o meno senza andare al repository remoto per vedere cosa significa "aggiornato"?
git pull
, cosa che l'OP vieta esplicitamente nella sua domanda.
git status -uno
funziona e si può anche usare git show-branch *master
per vedere lo stato di tutti i rami principali! Stai ancora dicendo che è impossibile? Puoi vedere lo stato di qualsiasi filiale purché tu abbia accesso al telecomando!
git status
ti dice solo lo stato dei tuoi ref locali, non ti dice se i tuoi ref locali sono aggiornati con i ref remoti. Di nuovo: è semplicemente logicamente impossibile sapere qual è lo stato del repository remoto senza ottenere lo stato del repository remoto. Periodo. Queste sono solo le leggi fondamentali dello spaziotempo.
ho provato a formattare la mia risposta, ma non ci sono riuscito. Per favore stackoverflow team, perché pubblicare la risposta è così difficile.
tuttavia,
risposta:
git fetch origin
git status (vedrai un risultato come "Il tuo ramo è dietro 'origin / master' di 9 commit")
per aggiornare alle modifiche remote: git pull