Cara Memeriksa Sejarah Projek Dengan Git Log

Cara Memeriksa Sejarah Projek Dengan Git Log

Salah satu perkhidmatan paling asas yang disediakan oleh Git adalah sejarah projek. Oleh kerana Git melacak semua perubahan pada fail yang dibuat dalam repositori, ia dapat menawarkan ciri-ciri pembalakan yang sangat kuat. Anda boleh membuat pertanyaan mengenai sejarah projek dengan pelbagai cara dan anda dapat mengekstrak dan memaparkan pelbagai data menggunakan satu perintah fleksibel.





The log git arahannya sangat besar, yang terbesar dari perintah Git biasa. Manualnya panjangnya lebih dari 2,500 baris. Nasib baik, log git menyediakan banyak tingkah laku yang paling berguna dari hanya beberapa pilihan utama.





Pembalakan Asas Dengan Kelakuan Lalai

Secara lalai, log git menunjukkan senarai komit terbalik. Setiap komit merangkumi hash, pengarang, tarikh, dan mesej komit:





Perintah menggunakan pager (mis. Kurang, lebih banyak) untuk menunjukkan output penuh sehingga anda dapat menavigasi hasilnya dengan mudah. Anda boleh mengkonfigurasi Git untuk menggunakan program pilihan anda, seperti pager paling banyak.

Berikut adalah beberapa output log git dari repositori kod sumber git sendiri:



commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origin/master, origin/HEAD)
Author: Junio C Hamano
Date: Mon Jun 14 13:23:28 2021 +0900
The second batch
Signed-off-by: Junio C Hamano

Hasilnya dimulakan dengan hash komit ( 670 ...) diikuti dengan senarai cawangan yang pada masa ini menunjukkan komitmen tersebut ( KETUA -> tuan , dan lain-lain.)

tingkap perangkap mod kernel yang tidak dijangka 10

Baris seterusnya menerangkan penulis komit ini, memberikan nama dan alamat e-mel mereka.





Tarikh dan masa lengkap komit mengikuti baris seterusnya.

Akhirnya, kandungan penuh mesej komit muncul. Anda boleh mengawal hampir semua perkara lain yang ditawarkan log git dengan pilihan baris perintah. Terdapat dua jenis pilihan utama:





  • Pemformatan, yang menentukan bagaimana Git memaparkan setiap komit.
  • Penapisan, yang menentukan yang melakukan log git merangkumi.

Sebagai tambahan kepada pilihan baris perintah, log git menerima argumen yang menentukan fail, komit, cabang, atau jenis rujukan lain. Ini berlaku penapisan selanjutnya.

Memformat Output Log Git

Salah satu penyesuaian paling mudah adalah --satu garisan pilihan yang menghasilkan output yang sangat singkat:

git log --oneline

Setiap baris dalam log sekarang hanya mengandungi hash komit yang disingkat dan subjek mesej komit. Ini adalah kaedah terbaik untuk mendapatkan gambaran keseluruhan mengenai komitmen terkini terhadap projek ini:

Malangnya, tanpa konteks lain, maklumat ini tidak selalu berguna. Ini mungkin memberi anda gambaran yang tidak jelas untuk projek ini, tetapi kekurangan tarikh dan maklumat berguna lain mengenai pengarang dan fail.

Melihat Graf Cawangan

The --graf pilihan membolehkan anda menggambarkan hubungan antara cawangan. Ini sangat asas tetapi dapat membantu menguraikan sejarah yang rumit.

git log --oneline --graph

Berkaitan: Cara Membuat Cawangan Baru di Git

Keluaran Cukup disesuaikan

Anda boleh mencapai pemformatan yang lebih rumit dengan menentukannya secara terperinci menggunakan - cantik pilihan. Sintaksnya berubah dari yang sangat sederhana hingga yang lebih kompleks, jadi rujuk manual untuk maklumat lengkap .

bolehkah anda melindungi kata laluan dengan kata laluan
git log --pretty=short

Pada dasarnya sama dengan log git tanpa tarikh atau mesej penuh:

git log --pretty=oneline

Adakah setara dengan git log - talian .

git log --pretty=fuller

Termasuk banyak perincian. Ia bahkan memisahkan pengarang dan komitter yang mungkin, secara teori, adalah orang yang berbeza:

Dengan format: varian, anda boleh menyediakan rentetan yang mengandungi apa sahaja kandungan yang anda mahukan, termasuk tempat letak yang digantikan oleh pelbagai data. Berikut adalah beberapa contoh tempat letak:

  • % H komit hash
  • % h disingkat komit hash
  • % kepada tarikh pengarang
  • % Dengan tarikh pengarang, saudara
  • % s komit subjek mesej
  • % b komited badan mesej
  • % p hash ibu bapa yang disingkat

Anda boleh menambahkan watak tetap ke output dan mewarnakannya. Contoh ini juga menunjukkan variasi pada format tarikh:

git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short

Perhatikan bahawa tanda kurung merangkumi tarikh. Apa sahaja format yang anda pilih, jika anda mahu outputnya berguna dalam perancangan atau bentuk pemprosesan teks yang lain, anda harus mempertimbangkan cara membezakan setiap bahagian output.

Menunjukkan Diff dalam Log

Perincian penting ketika melihat sejarah repositori adalah perbezaannya. Bagaimanapun, ini mewakili apa yang sebenarnya berubah dalam kod! Sebagai permulaan, anda boleh mendapatkan ringkasan perubahan di samping setiap penggunaan komit - pendek :

git log --shortstat

Ini menambah garis seperti:

1 file changed, 48 insertions(+), 2 deletions(-)

Ke bahagian bawah setiap komitmen. Anda akan sering melihat ringkasan seperti ini — di seluruh halaman di GitHub, misalnya — dan cara yang berguna untuk menilai dengan cepat skop komitmen tertentu. Untuk maklumat yang lebih terperinci, anda boleh memasukkan output patch penuh (perbezaan) menggunakan -p bendera:

git log -p

Menapis Hasil Log Git

Apa sahaja format yang anda gunakan, anda masih akan melihat log lengkap semua komitmen di cawangan semasa. Walaupun Git memecahnya menjadi halaman, ia masih boleh menghasilkan banyak output. Pilihan berikut membolehkan anda menyesuaikan yang merangkumi log termasuk.

Sekatan mengikut Jumlah

Sekiranya anda hanya ingin memangkas hasilnya untuk menunjukkan beberapa komitmen terbaru, gunakan - [nombor] sintaks:

git log -2

Sekatan mengikut Tarikh

Untuk mengehadkan kumpulan komit pada julat tarikh tertentu, gunakan --sejak ( - selepas ) dan - sehingga ( - sebelum ) pilihan. Masing-masing mengambil tarikh dalam format ISO 8601. Anda boleh menggunakan salah satu --sejak atau - sehingga sendiri, atau keduanya bersama-sama untuk menentukan julat. Pilihannya - selepas dan - sebelum adalah sinonim.

git log --since='2021-01-01' --until='2021-05-01'

Sekatan mengikut Fail

Git log boleh memfokuskan pada fail tertentu dan bukannya pada setiap fail di repositori anda. Ini bagus untuk membantu anda mengetahui bagaimana fail tertentu berubah dari masa ke masa. Cukup tambahkan nama fail ke akhir arahan git anda:

git log filename

Anda hanya akan melihat perbuatan yang terpengaruh nama fail .

Perbezaan Antara Cabang

Anda mungkin mempunyai beberapa keperluan unik semasa melihat log cawangan. Sebagai contoh, daripada melihat keseluruhan sejarah, anda mungkin ingin melihat apa yang berubah di cabang tertentu itu. Git log dapat membantu melalui ref1..ref2 sintaksis. Terdapat tiga pendekatan yang berbeza yang boleh anda gunakan:

  1. Lihat komit yang utama, tetapi bukan cabang: git log --oneline origin/branch..origin/main
  2. Lihat komit yang berada di cawangan, tetapi tidak utama: git log --oneline origin/ main ..origin/ branch
  3. Lihat komit yang hanya terdapat di cawangan atau utama: git log --oneline origin/branch ... origin/main

Perbezaan Antara Dua Tag

Sama seperti anda dapat melihat sejarah antara cawangan menggunakan ref1..ref2 sintaks, anda juga dapat melihat sejarah antara tag dengan cara yang sama. Lagipun, kedua-dua teg dan cabang adalah jenis rujukan.

git log --abbrev-commit --pretty=format:'%h %ar %s' v2.32.0-rc3..v2.32.0

Sekiranya anda menyediakan nota pelepasan untuk projek yang lebih besar, jalan pintas git harus menjadi pelabuhan panggilan pertama anda. Ini menghasilkan senarai pengarang dengan subjek komited di sampingnya. Anda boleh memberikannya rujukan untuk membatasi sejarah dengan cara yang serupa dengan git log:

git shortlog v2.32.0-rc3..v2.32.0

The arahan pertunjukan git malah lebih serba boleh daripada log git . Ia boleh berfungsi dengan tag dan jenis objek git lain di luar sejarah komitmen. Ia berkongsi banyak pilihan dengan log git , tetapi anda hanya akan memerlukannya sekiranya anda perlu mencari maklumat terperinci peringkat rendah.

Kaji Masa Lalu Dengan Log Git

Git log adalah perintah yang rumit, tetapi anda boleh mendapatkan banyak penggunaan dari pilihannya yang paling asas. Menyemak imbas sejarah repositori adalah kaedah terbaik untuk memahami seberapa kerap perubahan berlaku dan berapa banyak orang membuatnya. Setelah anda memahami sejarah projek dengan baik, anda akan berada dalam kedudukan yang baik untuk menyumbang sendiri.

android menggunakan kad sd untuk aplikasi
Berkongsi Berkongsi Tweet E-mel Sertailah Trend Pengekodan Sosial dan Sumbang ke Repositori GitHub

Ingin melatih otot pengekodan anda dan membantu projek sumber terbuka? Inilah cara untuk menyumbang kepada GitHub.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • GitHub
  • Petua Pengekodan
Mengenai Pengarang Bobby Jack(58 Artikel Diterbitkan)

Bobby adalah peminat teknologi yang bekerja sebagai pembangun perisian selama hampir dua dekad. Dia meminati permainan, bekerja sebagai Editor Ulasan di Switch Player Magazine, dan terlibat dalam semua aspek penerbitan dalam talian & pembangunan web.

Lagi Dari Bobby Jack

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan