masuk 10 pertama di git


93

Dua pertanyaan:

  1. Cara menampilkan 10 commit pertama di git dari awal hingga akhir. (tidak ada cabang)
  2. 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?



gulir ke jawaban @kostix
Muhammad Umer

Jawaban:


60

Cukup catat semuanya dengan format satu baris dan ekor hasilnya:

git log  --pretty=oneline | tail -n 10 

Bagus! Itulah yang saya cari. Tks @CharlesB.
yohan zhou

3
Atau, gunakan git rev-list HEAD | tail -n 10untuk mendapatkan 10 ID ke daftar, yang kemudian dapat Anda tampilkan dalam format apa pun yang Anda suka (tidak terbatas pada metode satu baris).
torek

17
tailtampaknya kehilangan warna bagus yang saya dapatkan di konsol git saya. Meneruskan parameter seperti git log --oneline -10pada jawaban lain berfungsi seperti yang saya harapkan.
James Hulse

4
Ini jelas cara Unix hard-core, lol. Silakan lihat jawaban @kostix.
9301293

1
Kelemahan dari metode ini adalah saya hanya dapat melihat komitmen yang didorong.
Jack '

257
git log -10

Akan menampilkan 10 komit terbaru yang cocok dengan spesifikasi revisi (spesifikasi yang hilang berarti "semua komit").

Lihat halaman manual:

git help log

bagian Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.

6
sederhana, dan tidak bergantung pada tailketersediaan di platform Anda.
tenpn

8
& tidak mengacaukan pemformatan / pewarnaan git. Ini harus menjadi jawaban yang diterima x100
kuzyn

10
Bukan yang diinginkan op: dia menginginkan first10, bukan latest.
Timo

1
@Timo, sangat mungkin ya, tetapi pertanyaan seperti yang dinyatakan terbuka untuk interpretasi, dan banyak orang tampaknya akhirnya memilih jawaban saya hanya karena perbedaan terbuka ini. Jadi sementara saya secara teknis setuju dengan Anda, mari kita pertahankan sebagaimana adanya, saya kira ;-) Di antara saran yang secara teknis benar, saya paling suka komentar torek untuk jawaban yang diterima.
kostix

@kostix "Bagaimana menunjukkan 10 commit pertama di git dari awal sampai akhir" tidak "terbuka untuk interpretasi" sejauh yang saya ketahui. Ini jelas meminta 10 komit pertama , bukan yang terbaru .
Bobby Jack

30

Di sini pendekatan saya,

Untuk mendapatkan 10 komit pertama:

git log -n 10

-n adalah angka

Tambahan Untuk mendapatkan 10 commit berikutnya, lewati 10 pertama:

git log --skip=10 -n 10

Saya pikir ini harus menjadi jawaban yang diterima. Menggunakan ekor akan menyebabkan --graph berhenti bekerja di git log
relief.melone

Ini harus menjadi jawaban yang diterima. bekerja seperti pesona bagi saya
Doogle

Anda juga kehilangan warna font di konsol menggunakan ekor. ini adalah jawaban yang benar
CESCO

14

Untuk mendapatkan 10 komit terakhir:

git log HEAD~10..HEAD

Untuk membuatnya dalam urutan terlama ke terbaru:

git log --reverse HEAD~10..HEAD

Perhatikan bahwa jika ada penggabungan, ini mungkin menunjukkan lebih dari 10 komit; tambahkan --first-parentjika 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:

git log --no-walk `git rev-list HEAD | tail -n 10`

dan:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

tergantung urutan hasil yang anda inginkan.


Tks atas balasan Anda. Tetapi saya tidak membutuhkan 10 komit terakhir tetapi yang pertama. Untuk lebih spesifik, jika komitnya adalah ABCDEFG (HEAD). Bagaimana cara log ABC dan bagaimana cara log C dengan indeks 2?
yohan zhou

Oh! Tidak ada jaminan bahwa hanya ada satu "komit pertama", tetapi jika ada, lihat tautan @CharlesB yang ditambahkan.
torek

Caranya bisa bekerja. ada cara alami? git log --pretty = oneline | wc -l git log HEAD ~ <Angka minus satu atau indeks>
yohan zhou

Terima kasih atas jawabannya. Inilah yang saya butuhkan untuk menghindari opsi gaya '-10' di alias git saya. yang menerima argumen angka.
vicTROLLA

11

hasil terbaik hadir dengan kombinasi dari kedua jawaban terbaik:

git log --pretty=oneline -10

1
Terima kasih saya menggunakan ini sebagai alias git untuk segera menampilkan komit terbaru tanpa mengisi terminal saya. Saya menelepon alias lkj = log --pretty=oneline --abbrev-commit -10. Sekarang saya menyadari itu tidak menjawab pertanyaan OP tetapi saya datang ke sini mencari tombol nomor sederhana.
Paul Rougieux

4

Cukup log semuanya reverse -1 berarti daftar satu log

git log  --reverse -1

3

saya akan menggunakan di bawah perintah sintaks sederhana;

git log -10 --oneline

1
Pikirkan ini cara yang paling efisien!
Nishant

0

Karena ... lebih detail: p

  1. Cara menampilkan 10 commit pertama di git dari awal hingga akhir. (tidak ada cabang)
  2. Bagaimana menentukan indeks komit dan mencatatnya. (tunjukkan yang kedua atau ketiga)

Dengan (tanpa cabang), Anda mungkin bertanya tentang reflograntai leluhur yang diberikan daripada yang diberikan. Berikut ini tidak ada hubungannya dengan cabang tempat Anda berada.

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -g adalah --walk-reflogs Alih-alih berjalan di rantai leluhur komit, berjalanlah reflog entries.q
  • tambahkan |cut -d ' ' -f 2|tr -d ':' > logke 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

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse Keluarkan komit dalam urutan terbalik.
  • Tidak dapat digunakan secara sederhana -n 10atau -10karena rusak--reverse
  • cat -n menambahkan nomor baris (komit indeks?)


0

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 11di bagian akhir harus disetel 1lebih dari jumlah komit yang Anda inginkan.

Seperti yang ditunjukkan di sinigit 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 🤪)

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.