Dua pertanyaan:
- Cara menampilkan 10 commit pertama di git dari awal hingga akhir. (tidak ada cabang)
- Bagaimana menentukan indeks komit dan mencatatnya. (tunjukkan yang kedua atau ketiga)
Saya tahu bahwa git menggunakan orang tua untuk menghubungkan komit, mudah untuk mencatat komit dari awal ke awal. Suka:git log HEAD~10
Tetapi saya perlu menanyakan dari awal hingga akhir, apakah itu mungkin?
Jawaban:
Cukup catat semuanya dengan format satu baris dan ekor hasilnya:
sumber
git rev-list HEAD | tail -n 10
untuk mendapatkan 10 ID ke daftar, yang kemudian dapat Anda tampilkan dalam format apa pun yang Anda suka (tidak terbatas pada metode satu baris).tail
tampaknya kehilangan warna bagus yang saya dapatkan di konsol git saya. Meneruskan parameter sepertigit log --oneline -10
pada jawaban lain berfungsi seperti yang saya harapkan.Akan menampilkan 10 komit terbaru yang cocok dengan spesifikasi revisi (spesifikasi yang hilang berarti "semua komit").
Lihat halaman manual:
bagian
Commit Limiting
sumber
tail
ketersediaan di platform Anda.first
10, bukanlatest
.Di sini pendekatan saya,
Untuk mendapatkan 10 komit pertama:
-n adalah angka
Tambahan Untuk mendapatkan 10 commit berikutnya, lewati 10 pertama:
sumber
Untuk mendapatkan 10 komit terakhir:
Untuk membuatnya dalam urutan terlama ke terbaru:
Perhatikan bahwa jika ada penggabungan, ini mungkin menunjukkan lebih dari 10 komit; tambahkan
--first-parent
jika Anda hanya ingin melintasi induk pertama dari setiap cabang.Untuk detail lebih lanjut, lihat dokumentasi untuk
git rev-list
.Sunting: Anda sudah mendapatkan jawaban yang berguna di atas untuk "tampilkan komit dekat awal riwayat" (sekali lagi, lihat peringatan tentang beberapa DAG komit yang tidak terhubung dalam sebuah repo). Tetapi Anda juga bisa melakukannya, misalnya:
dan:
tergantung urutan hasil yang anda inginkan.
sumber
hasil terbaik hadir dengan kombinasi dari kedua jawaban terbaik:
sumber
lkj = log --pretty=oneline --abbrev-commit -10
. Sekarang saya menyadari itu tidak menjawab pertanyaan OP tetapi saya datang ke sini mencari tombol nomor sederhana.Cukup log semuanya reverse -1 berarti daftar satu log
sumber
saya akan menggunakan di bawah perintah sintaks sederhana;
sumber
Karena ... lebih detail: p
Dengan (tanpa cabang), Anda mungkin bertanya tentang
reflog
rantai leluhur yang diberikan daripada yang diberikan. Berikut ini tidak ada hubungannya dengan cabang tempat Anda berada.git log -g --pretty=oneline | tail -10
-g
adalah--walk-reflogs
Alih-alih berjalan di rantai leluhur komit, berjalanlah reflog entries.q|cut -d ' ' -f 2|tr -d ':' > log
ke log hanya indeks komit reflog.Berikut ini akan menunjukkan leluhur paling awal dari cabang yang saat ini diperiksa.
git log --reverse --pretty=oneline | head -10 | cat -n
--reverse
Keluarkan komit dalam urutan terbalik.-n 10
atau-10
karena rusak--reverse
cat -n
menambahkan nomor baris (komit indeks?)sumber
Jika seseorang menginginkan lebih dari sekadar log satu baris git:
git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'
di mana
11
di bagian akhir harus disetel1
lebih dari jumlah komit yang Anda inginkan.Seperti yang ditunjukkan di sini
git log --reverse -n 10
tidak berfungsi seperti yang Anda butuhkan. ( Saya kira itu perlu non-komutatif untuk memberi Anda kemampuan untuk memilih 10 komit pertama dalam urutan terbalik atau 10 komit terakhir 🤪)sumber