Datangi pertanyaan ini sekarang dan ada sesuatu untuk ditambahkan
Untuk membuka komit terbaru:
git checkout $(git log --branches -1 --pretty=format:"%H")
Penjelasan:
git log --branches
memperlihatkan log komit dari semua cabang lokal
-1
membatasi satu komit →
--pretty=format:"%H"
format komit terkini untuk hanya menampilkan komit yang
git checkout $(...)
menggunakan output subkulit sebagai argumen untuk checkout
catatan:
Ini akan menghasilkan kepala terpisah (karena kami checkout langsung ke komit). Ini dapat dihindari dengan mengekstraksi nama cabang menggunakan sed
, dijelaskan di bawah ini.
Untuk pergi ke cabang komit terbaru:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Penjelasan:
git log --branches
memperlihatkan log komit dari semua cabang lokal
-1
membatasi hingga satu commit →
--pretty=format:"%D"
format commit terbaru untuk hanya menampilkan nama ref
| sed 's/.*, //g'
- referensi abaikan semua kecuali yang terakhir dari beberapa referensi (*)
git checkout $(...)
menggunakan output dari subkulit sebagai argumen untuk checkout
*) KEPALA dan cabang jarak jauh didaftar pertama, cabang lokal terdaftar terakhir dalam urutan abjad, sehingga yang tersisa akan menjadi nama cabang menurut abjad pertama
catatan:
Ini akan selalu hanya menggunakan nama cabang pertama (alfabet) jika ada beberapa untuk komit itu.
Bagaimanapun, saya pikir solusi terbaik hanya akan menampilkan nama-nama referensi untuk komit terbaru untuk mengetahui ke mana harus checkout:
git log --branches -1 --pretty=format:'%D'
Misalnya buat alias git top
untuk perintah itu.
git log
kalimat pertanyaan Anda, Anda selalu dapat menjalankangit log --all
(atau lebih bermanfaat,git log --oneline --graph --all
).