Vorrei sapere se il mio repository locale è aggiornato (e in caso contrario, idealmente, vorrei vedere le modifiche).
Come posso verificarlo senza fare git fetcho 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 fetcho 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-runnon 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 -unoti 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 -vcon 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 -unorisolto. git fetch --dry-runnon ha dato alcun output anche nei casi in cui il locale era dietro il telecomando.
puoi utilizzare git status -unoper verificare se la tua filiale locale è aggiornata con quella di origine.
git remote update ; git status -unofatto il trucco! Non ha git fetch --dry-rundato output quando me lo aspettavo (e git pullavrebbe tirato le cose).
Non proprio, ma non vedo come git fetchpotrebbe ferire perché non cambierà nessuno dei tuoi rami locali.
Un'altra alternativa è visualizzare lo stato del ramo remoto usando
git show-branch remote/branchper usarlo come confronto che potresti vedere git show-branch *branchper 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 fetchprima 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 mergeo 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 fetcho 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 -unofunziona e si può anche usare git show-branch *masterper 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 statusti 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