Come vedere le modifiche al codice dopo git pull?


91

Vorrei controllare eventuali modifiche al codice dopo aver eseguito un file git pull. Attualmente mi mostra solo quali file vengono modificati. Come posso vedere quale codice è cambiato?


Fare riferimento a questo .
unrealsoul007

Risposte:


100
git log --name-status -2

Ti mostrerà i nomi dei file che sono cambiati negli ultimi due commit.

git log -p -2

Ti mostreranno le modifiche stesse.

Prima di tirare

git fetch
git log --name-status origin/master..

Ti mostrerà quali commit stai per recuperare, insieme ai nomi dei file.


69

Prima di tirare

Puoi rivedere le modifiche come dice @iblue con fetche diffprima dell'unione :

$ git fetch
$ git diff master...origin/master

Nota il punto triplo, che significa diff contro il genitore condiviso e l'origine / master (commit contrassegnati di xseguito):

SP---o---o [master]
  \
   x---x [origin/master]

Subito dopo un tiro

La primissima riga nell'output di un pull ha questo aspetto:

$ git pull
Updating 37b431a..b2615b4
...

Puoi quindi fare semplicemente:

$ git diff 37b431a..b2615b4

O qualunque altro comando:

$ git log --name-status 37b431a..b2615b4

Più tardi

Se è passato un po 'di tempo da quando hai eseguito il pull e desideri sapere quali modifiche sono state apportate dall'ultimo pull, puoi cercarlo con:

$ git reflog | grep -A1 pull | head -2

che mostrerà l'hash dopo il pull seguito dall'hash prima del pull:

b2615b4 HEAD@{0}: pull : Fast-forward
37b431a HEAD@{1}: checkout: moving from v6.1 to master

Puoi quindi fare la stessa cosa con questi due hash:

git diff 37b431a..b2615b4

3
Questa è l'unica risposta che ti consente di controllare quali file sono stati modificati durante l'ultimo pull quando non ricordi quanti commit sono stati estratti in quel momento.
kremuwa

24

Poiché git pullè solo una scorciatoia per git fetche git merge, puoi correre git fetcha recuperare i rami dall'origine e quindi mostrare le differenze prima di unirli. Come questo:

git fetch                      # Load changes from remote server
git diff master origin/master  # Show differences
git merge origin/master        # Merge remote changes with local changes

Se esegui su un ramo diverso dal master , dovresti ovviamente cambiare i nomi dei rami nei comandi sopra.


1
`` `git diff --name-only master origin / master [path]` `
jiacheo

10

Puoi confrontare i contenuti estratti con le fonti del commit immediatamente precedente da,

git diff branch_name@{1}

per esempio:

git diff master@{1}

Per il confronto con le fonti di cui n si impegna

git diff branch_name@{n}

3
Questa è una buona risposta, ma la spiegazione non è corretta: "Per il confronto con le fonti n si impegna dietro" . La @{n}sintassi in realtà indica la posizionenth precedente del ramo / testa. Ad esempio, se ci sono stati 10 commit dall'ultima volta che hai eseguito un pull, farebbe riferimento alla posizione precedente di , che è 10 commit prima. Questo è il motivo per cui using è utile per controllare le modifiche dopo un pull. master@{1}master@{n}
wisbucky

Questa è la risposta che stavo cercando! Grazie per la spiegazione @wisbucky
tamerlaha

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.