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?


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.


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

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.


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}

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.