Git: Lihat komit terakhir saya


390

Saya hanya ingin melihat file yang dilakukan di komit terakhir persis seperti yang saya lihat daftar ketika saya melakukannya git commit. Sayangnya mencari

git "last commit" log

di Google membuat saya tidak punya tempat. Dan

git diff HEAD^..HEAD

bukan yang saya butuhkan, tentu saja, karena itu memuntahkan nyali perubahan juga.


35
Terima kasih, sebenarnya saya hanya butuh git diff HEAD^..HEAD!
Ameen

Jawaban:


376

Seperti yang ditentukan melalui komentar, tampaknya OP sedang mencari

$ git log --name-status HEAD^..HEAD

Ini juga sangat dekat dengan output yang Anda dapatkan dari svn statusatau svn log -v, yang banyak orang yang datang dari subversi ke git kenal.

--name-statusadalah kuncinya di sini; seperti dicatat oleh orang lain dalam pertanyaan ini, Anda dapat menggunakan git log -1, git show, dan git diffuntuk mendapatkan jenis yang sama output. Secara pribadi, saya cenderung menggunakan git show <rev>ketika melihat revisi individual.


Saya akui, komentar bukanlah cara terbaik bagi saya untuk membuat pertanyaan saya lebih bersih :) terima kasih MikeSep
Dan Rosenstark

4
Saya pikir ini memberikan komitmen terakhir, bukan? Jadi, untuk terakhirKU yang akan saya lakukangit log --stat --author nroose -n 1
nroose

1
Dan dapat disingkat dan disingkat dengan git show --name-status --oneline
jasonleonhard

Itu sangat jelas! Saya seharusnya menebak itu sesuatu yang sangat sederhana karena ini adalah jenis pertanyaan yang terjadi setiap saat.
Scott Biggs

1
Jika menggunakan force push, perintah ini akan menunjukkan patch terakhir kepada Anda dan bukan komit terbaru (pada waktunya) ... mungkin rumit dalam beberapa kasus penggunaan
Olix

208

Gunakan git show :

git show --summary

Ini akan menunjukkan nama-nama file yang dibuat atau dihapus, tetapi bukan nama-nama file yang diubah . The git showperintah mendukung berbagai macam format output yang menunjukkan berbagai jenis informasi tentang komit.


1
@jamessan git show --statdekat, tetapi tidakkah ada tampilan di mana kata 'dimodifikasi' atau 'ditambahkan' muncul di sebelah file?
Dan Rosenstark

3
Jika Anda hanya ingin nama-nama file (bahkan kurang dari --stat), Anda mungkin juga ingin melihat --name-statusdan --name-onlyberalih.
Mike Seplowitz

1
@ MikeSep, itu sebenarnya yang saya butuhkan. Jika Anda menjawabnya, saya akan menandainya sebagai jawaban terbaik, karena bagi saya jawabannya. Saya menggunakangit log --name-status HEAD^..HEAD
Dan Rosenstark

Sejauh ini ini adalah solusi paling sederhana dari yang ditawarkan.
Matius


44

Untuk melihat komit terakhir

git log -1

Untuk melihat 2 komit terakhir

git log -2

dll ....


1
Tetapi pertanyaan mengatakan "... ingin melihat file yang dikomit di komit terakhir" .
Peter Mortensen

42

Sejauh ini perintah paling sederhana untuk ini adalah:

git show --name-only

Karena daftar hanya file di komit terakhir dan tidak memberi Anda seluruh nyali

Contoh dari output adalah:

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <Kylo@darkside.empire.gov>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       

7
Pertimbangkan --name-statusalih-alih --name-only.
Acumenus

5
Ada masalah di sana .. kekaisaran menggunakan php untuk grid pertahanan!
ptim

3
Contoh terbaik yang pernah saya lihat di stackoverflow! "Itu bukan komitmen yang kamu cari."
Scott Biggs

22
git log -1 --name-status

Apakah bekerja untuk saya.


21

Untuk melihat perubahan komit terakhir

git show HEAD

Atau untuk melihat perubahan komit terakhir kedua

git show HEAD~1

Dan untuk selanjutnya cukup ganti '1' di atas dengan nomor urut komit yang diperlukan.


15

Setelah Anda melakukan beberapa komit atau mengkloning / menarik repositori, Anda mungkin ingin melihat komit apa yang telah dibuat. Cukup periksa solusi sederhana ini untuk melihat riwayat komit Anda (dari komit terakhir / terakhir ke komit pertama).

Untuk komit terakhir, hanya api perintah ini: git log -1. Untuk hal-hal menarik lainnya lihat di bawah -

  1. Untuk melihat ID komit (SHA-1 checksum), Nama penulis <ID ID>, Tanggal bersama waktu, dan komit pesan -

    git log
    
  2. Untuk melihat beberapa statistik lagi, seperti nama semua file yang diubah selama komit dan jumlah penyisipan / penghapusan. Ini sangat berguna saat meninjau kode -

    git log --stat
    
  3. Untuk melihat histori komit dalam beberapa format cantik :) (Ini diikuti oleh beberapa opsi prebuild) -

    • Jika Anda memiliki terlalu banyak komitmen untuk ditinjau, perintah ini akan menampilkannya dalam satu baris yang rapi:

      git log --pretty=oneline
      
    • Untuk melihat komit Anda yang pendek, sedang, penuh, atau bahkan lebih detail, gunakan yang berikut, masing-masing -

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Anda bahkan dapat menggunakan format output Anda sendiri menggunakan formatopsi -

    git log --pretty=format:"%an, %ae - %s"
    

    di mana% an - nama penulis,% ae - email penulis,% s - subjek komit, dll.

Ini dapat membantu Anda dengan riwayat komit Anda. Untuk informasi lebih lanjut, klik di sini .


11
$ git diff - HEAD only-only ^ .. HEAD

atau

$ git log - HEAD only -name ^ .. KEPALA

Itu yang saya butuhkan cukup banyak. Bagaimana dengan sesuatu yang mengatakan apakah itu diubah, ditambahkan atau dihapus? Mungkin dengan surat, svn-style?
Dan Rosenstark

1
Mengerti sekarang git log --name-status HEAD^..HEAD
Dan Rosenstark

2
Alih-alih git log ... HEAD^..HEAD, bukankah lebih mudah digunakan git log ... -1 HEAD, atau lebih baik git show ... HEAD?
Jakub Narębski

Setelah menjelajahi beberapa posting Stackoverflow, ini adalah jawaban yang saya butuhkan. Saya hanya ingin file dan tidak ada yang lain. Tidak ada ringkasan komit, hanya file dari komit terbaru. TERIMA KASIH!
luckytaxi

6

git diff --stat HEAD

Ini menunjukkan diffstat yang sama dengan komit terakhir Anda.


4

Cara lain untuk mendaftar hanya file adalah dengan menggunakan:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
Atau Anda dapat menggunakan dua ID komit


keuntungan dari ini log?
Dan Rosenstark

Ini pada dasarnya adalah cara berbeda untuk mendaftarkan file. Saya biasanya menggabungkan ini dengan rsync untuk penyebaran
Ismail Cherri

0

Jika Anda berbicara tentang menemukan komit terbaru dan terhebat setelah Anda melakukan checkout git dari beberapa komit sebelumnya ( dan lupa untuk menuliskan hash HEAD sebelum mengeksekusi checkout ) sebagian besar di atas tidak akan membuat Anda kembali ke tempat kamu mulai. git log - [some #] hanya menampilkan log dari posisi SAAT KEPALA , yang belum tentu komit terakhir (keadaan proyek). Checkout akan memutuskan HEAD dan mengarahkannya ke apa pun yang Anda periksa.

Anda dapat melihat seluruh reflog git , hingga mencapai entri yang merujuk pada klon asli. BTW, ini juga tidak akan berfungsi jika ada komitmen yang dibuat antara saat Anda mengkloning proyek dan ketika Anda melakukan checkout. Kalau tidak, Anda bisa berharap semua komitmen Anda pada mesin lokal Anda ada di server, dan kemudian mengkloning kembali seluruh proyek.

Semoga ini membantu.


Terima kasih, ini poin yang bagus tapi pertanyaan aslinya jauh lebih sederhana dan sudah dijawab dengan baik berkali-kali.
Dan Rosenstark
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.