Bagaimana cara melihat perubahan kode setelah git pull?

91

Saya ingin memeriksa setiap perubahan kode setelah melakukan a git pull. Saat ini hanya menunjukkan kepada saya file mana yang berubah. Bagaimana saya bisa melihat kode apa yang berubah?

uwe
sumber
Lihat ini .
unrealsoul007

Jawaban:

100
git log --name-status -2

Akan menunjukkan nama file yang diubah untuk dua komit terakhir.

git log -p -2

Akan menunjukkan kepada Anda perubahan itu sendiri.

Sebelum Anda menarik,

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

Akan menunjukkan kepada Anda komitmen apa yang akan Anda ambil, bersama dengan nama file.

Wayne Conrad
sumber
69

Sebelum menarik

Anda dapat meninjau perubahan seperti yang dikatakan @iblue dengan fetchdan diffsebelum menggabungkan:

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

Perhatikan periode tiga, yang berarti diff terhadap induk bersama dan asal / master (komit ditandai di xbawah):

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

Tepat setelah tarikan

Baris pertama dalam keluaran tarikan terlihat seperti ini:

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

Anda kemudian dapat melakukan:

$ git diff 37b431a..b2615b4

Atau perintah lain apa pun:

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

Kemudian

Jika sudah lama sejak Anda tidak menarik, dan Anda ingin tahu perubahan apa yang dibawa oleh tarikan terakhir, Anda dapat mencarinya dengan:

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

yang akan menampilkan hash setelah tarikan diikuti dengan hash sebelum tarikan:

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

Anda kemudian dapat melakukan hal yang sama dengan dua hash ini:

git diff 37b431a..b2615b4
quornian
sumber
3
Ini adalah satu-satunya jawaban yang memungkinkan Anda untuk memeriksa file mana yang telah berubah selama penarikan terakhir ketika Anda tidak ingat berapa banyak komit yang ditarik pada saat itu.
kremuwa
24

Karena git pullini hanya pintasan untuk git fetchdan git merge, Anda dapat menjalankan git fetchuntuk mengambil cabang dari asalnya dan kemudian menunjukkan perbedaannya sebelum menggabungkan. Seperti ini:

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

Jika Anda menjalankan di cabang yang berbeda dari master , Anda tentu saja harus mengubah nama cabang pada perintah di atas.

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

Anda dapat membandingkan konten yang ditarik dengan sumber dari langsung sebelumnya oleh,

git diff branch_name@{1}

misalnya:

git diff master@{1}

Untuk membandingkan dengan sumber n komit di belakang,

git diff branch_name@{n}
Kasun
sumber
3
Ini adalah jawaban yang bagus, tetapi penjelasannya salah: "Untuk membandingkan dengan sumber n melakukan di belakang" . The @{n}sintaks sebenarnya berarti nthsebelumnya posisi cabang / kepala. Misalnya, jika sudah ada 10 komit sejak terakhir kali Anda melakukan tarik, master@{1}akan mengacu sebelum posisi dari master, yang merupakan 10 komit sebelumnya. Inilah sebabnya mengapa penggunaan @{n}berguna untuk memeriksa perubahan setelah penarikan.
wisbucky
Inilah jawaban yang saya cari-cari! Terima kasih atas penjelasan @wisbucky
tamerlaha
5

Anda dapat memeriksa apa yang mendapat perubahan sambil mendorong dan menarik dengan ini ...

git log --stat
Sandip Karanjekar
sumber