Apa yang git rev-parse
harus dilakukan
Saya telah membaca halaman manual tetapi itu menimbulkan lebih banyak pertanyaan daripada jawaban. Hal-hal seperti:
Pilih dan pijat parameter
Pijat ? Apa artinya?
Saya menggunakan sebagai resolver (untuk SHA1) dari penentu revisi, seperti
git rev-parse HEAD^
atau
git rev-parse origin/master
Apakah ini tujuan perintah? Jika tidak, apakah benar menggunakannya untuk mencapai ini?
git
git-rev-parse
tinggi
sumber
sumber
rev-parse
perintah tersebut. Anda juga dapat menggunakannya untuk menormalkan baris perintah, sehingga program yang sebenarnya tidak harus memahami sintaks nama objek yang rumit dari Git (Anda akan menggunakangit rev-parse
untuk mengubah, atau "memijat", parameter tertentu di baris perintah sebelum program aktual disebut).git rev-parse
itu sangat tidak bisa dimengerti. Saya terkejut tidak ada yang peduli untuk menulis ulang jargon itu menjadi sesuatu yang dapat dibaca manusia, bahkan setelah 5 tahun.Jawaban:
git rev-parse
adalahplumbing
perintah tambahan yang terutama digunakan untuk manipulasi.Salah satu penggunaan umum
git rev-parse
adalah untuk mencetak hash SHA1 yang diberikan specifier revisi. Selain itu, ia memiliki berbagai opsi untuk memformat output ini seperti--short
untuk mencetak SHA1 unik yang lebih pendek.Ada juga kasus penggunaan lain (dalam skrip dan alat lain yang dibangun di atas git) yang telah saya gunakan untuk:
--verify
untuk memverifikasi bahwa objek yang ditentukan adalah objek git yang valid.--git-dir
untuk menampilkan jalur abs / relatif dari.git
direktori.--is-inside-git-dir
atau dalam pohon kerja menggunakan--is-inside-work-tree
--is-bare-repository
--branches
), tag (--tags
) dan referensi juga dapat difilter berdasarkan remote (menggunakan--remote
)--parse-opt
untuk menormalkan argumen dalam skrip (sejenis mirip dengangetopt
) dan mencetak string keluaran yang dapat digunakaneval
Massage
hanya menyiratkan bahwa adalah mungkin untuk mengubah info dari satu bentuk ke bentuk lain yaitu perintah transformasi. Ini adalah beberapa contoh cepat yang dapat saya pikirkan:A..B
untukgit log
ataugit diff
ke argumen yang setara untuk perintah pipa ledeng yang mendasarinya sebagaiB ^A
sumber
Hanya untuk menguraikan etimologi nama perintah
rev-parse
, Git secara konsisten menggunakan istilahrev
dalam perintah pipa sebagai singkatan dari "revisi" dan umumnya berarti hash SHA1 40-karakter untuk komit. Perintahrev-list
misalnya mencetak daftar hash commit 40-char untuk cabang atau apa pun.Dalam hal ini nama mungkin diperluas ke
parse-a-commitish-to-a-full-SHA1-hash
. Sementara perintah memiliki beberapa fungsi tambahan yang disebutkan dalam jawaban Tuxdude, namanya tampaknya menjadi kasus penggunaan mengubah referensi yang ramah pengguna seperti nama cabang atau hash disingkat menjadi hash 40 karakter SHA1 yang jelas paling berguna untuk banyak pemrograman / plumbing tujuan.Saya tahu saya berpikir itu adalah "reverse-parse" sesuatu untuk sementara waktu sebelum saya mengetahuinya dan memiliki masalah yang sama membuat pengertian istilah "memijat" dan "memanipulasi" :)
Bagaimanapun, saya menemukan gagasan "parse-to-a-revisi" ini cara yang memuaskan untuk memikirkannya, dan konsep yang dapat diandalkan untuk membawa perintah ini ke pikiran ketika saya membutuhkan hal semacam itu. Seringkali dalam skrip Git Anda mengambil referensi komit ramah-pengguna sebagai input pengguna dan umumnya ingin menyelesaikannya menjadi referensi kerja yang valid dan tidak ambigu segera setelah menerimanya mungkin. Kalau tidak, input terjemahan dan validasi cenderung berkembang biak melalui skrip.
sumber
messaging
danmanipulation
seperti yang Anda singgung sebelumnya?git rev-parse
kependekan darigit revision-parse
. Dibutuhkan input yang diberikan dan mengembalikan ID revisi 40-karakter yang sesuai.git rev-parse
Juga berfungsi untuk mendapatkan nama cabang saat ini menggunakan flag --abbrev-ref seperti:sumber
git log --format=%B -n 1 <revision>