Come posso vedere che cosa sto per spingere con git?

C’è un modo per vedere cosa verrebbe spinto se facessi un comando git push ?

Quello che sto immaginando è qualcosa come la scheda “File modificati” della funzione “pull request” di Github. Quando invio una richiesta di pull, posso guardare e vedere cosa verrà tirato dentro se accettano la mia richiesta di pull: esempio github di modifiche aggregate

La riga di comando è OK, ma preferirei una sorta di interfaccia grafica (come la schermata sopra).

Per un elenco di file da inviare, eseguire:

 git diff --stat --cached [remote/branch] 

esempio:

 git diff --stat --cached origin/master 

Per il codice diff dei file da inviare, eseguire:

 git diff [remote repo/branch] 

Per vedere i percorsi completi dei file dei file che cambieranno, esegui:

 git diff --numstat [remote repo/branch] 

Se vuoi vedere queste differenze in una GUI, dovrai configurare git per quello. Vedi Come visualizzo l’output di git diff con un programma di visualizzazione visiva? .

C’è sempre una corsa a secco:

 git push --dry-run 

Farà tutto tranne che per l’invio effettivo dei dati.

Se vuoi una vista più grafica hai un sacco di opzioni.

Tig e lo script gitk forniti con git mostrano entrambi il ramo corrente della tua copia locale e il ramo del telecomando o dell’origine.

alt text

Quindi qualsiasi commit che fai dopo l’origine sono i commit che verranno spinti.

Apri gitk dalla shell mentre sei nel ramo che vuoi spingere digitando gitk& , quindi per vedere la differenza tra ciò che si trova sul telecomando e ciò che stai per spingere sul telecomando, seleziona il commit locale non premuto e fai clic con il tasto destro del mouse sul telecomando e scegli “Diff questo -> selezionato”: alt text

Per elencare semplicemente i commit che aspettano di essere spinti: ( questo è quello che ricorderai )

 git cherry -v 

Mostra i soggetti di commit accanto agli SHA1.

Probabilmente vuoi eseguire git difftool origin/master... questo dovrebbe mostrare la differenza unificata di ciò che si trova sul ramo corrente che non si trova ancora nel ramo di origine / master e visualizzarlo nello strumento di diff grafico di tua scelta. Per essere aggiornato, avvia prima git fetch .

Un modo per confrontare la versione locale prima di spingerla sul repository remoto (tipo di push in dry-run):

Usa TortoiseGit:
Fare clic con il tasto destro del mouse sul progetto della cartella principale> TortoiseGit> Diff con la versione precedente>
per la versione 2 scegli refs/remotes/origin/master

Prova git diff origin/master..master (assumendo che origin/master sia il tuo upstream). A differenza di git push --dry-run , funziona anche se non si dispone dell’authorization alla scrittura per l’upstream.

Usa git gui , qui puoi vedere un elenco di ciò che è cambiato nel tuo commit effettivo. Puoi anche usare gitk che fornisce un’interfaccia semplice per i reflog. Basta confrontare tra remotes/... e master per vedere, cosa verrà spinto. Fornisce un’interfaccia simile al tuo screenshot.

Entrambi i programmi sono inclusi in git.

Per vedere quali file sono stati modificati e visualizzare le modifiche effettive del codice rispetto al ramo master , è ansible utilizzare:

 git diff --stat --patch origin master 

NOTA : Se si utilizza uno degli IDE Intellij, è ansible fare clic con il pulsante destro del mouse sul progetto di livello superiore, selezionare Git > Confronta con diramazione > e selezionare l’origine desiderata, ad es. origin/master . Nella struttura dei file che apparirà puoi fare doppio clic sui file per vedere una differenza visiva. A differenza dell’opzione della riga di comando sopra puoi modificare le tue versioni locali dalla finestra di diff.

Se utilizzi Mac OS X, ti consiglio di procurarti Tower, è un programma meraviglioso che ha reso il trattamento di Git un piacere per me. Ora ho più bisogno di ricordare i comandi del terminale e offre una grande GUI per visualizzare, tracciare e risolvere le differenze nei file.

E no, non sono affiliato con loro, uso solo il loro software e mi piace davvero.

http://www.git-tower.com/

Puoi elencare i commit di:

 git cherry -v 

E poi confrontare con il seguente comando dove il numero di ^ è uguale al numero di commit (nell’esempio il suo 2 commette):

 git diff HEAD^^