Lebih
Diberikan komit id, bagaimana untuk mengetahui jika saat ini cabang berisi komit?
Apa yang saya'm mencoba untuk lakukan adalah cek versi. Saya ingin memastikan kode tetap di atas versi minimum. Jadi saya perlu cara untuk mengetahui jika saat ini cabang berisi ditentukan komit.
115
6
Ada beberapa cara untuk mencapai hasil ini. Pertama naif pilihan adalah dengan menggunakan
git log
dan buku tertentu komit menggunakangrep
, tapi itu tidak selalu tepatAnda akan lebih baik untuk menggunakan git branch
langsung untuk menemukan semua cabang yang mengandung diberikan
COMMIT_ID` menggunakanLangkah berikutnya adalah mencari tahu saat ini cabang yang dapat dilakukan sejak
git 1.8.1
menggunakanDan digabungkan bersama-sama sebagai
Tapi perintah di atas doesn't return true atau false, dan ada versi yang lebih pendek yang kembali keluar kode 0 jika melakukan ini di saat ini cabang ATAU keluar kode 1 jika tidak
Kode keluar bagus, tapi seperti yang anda inginkan string
true
ataufalse
sebagai jawaban yang anda butuhkan untuk menambahkan sedikit lebih banyak dan kemudian dikombinasikan denganjika
dari bash anda dapatkanDapatkan daftar branch(es) yang berisi spesifik komit.
Memeriksa apakah suatu cabang tertentu yang melakukan.
Pencarian cabang (katakanlah,
fitur
) dengan pencocokan tepat.misalnya Jika anda memiliki 3 cabang lokal yang disebut
tidur
,fitur1
,feature2
kemudianAnda juga dapat mencari di kedua
lokal
danremote
cabang (gunakan-a
) atau hanya diremote
cabang (gunakan-r
).Diekstrak komentar oleh @torek sebagai jawaban:
Melihat diusulkan duplikat untuk bagaimana untuk menemukan semua cabang yang mengandung ditentukan komit.
Untuk mengetahui apakah saat ini ** branch berisi komit C, gunakan "pipa" perintah git merge-dasar-adalah-nenek moyang`. Saat ini cabang yang berisi C jika C adalah nenek moyang dari KEPALA, sehingga:
(Catatan: dalam skrip shell, perintah yang keluar nol adalah "benar" sementara yang keluar bukan nol adalah "salah".)
Ya alternatif lain:
git rev-daftar <nama cabang> | grep `git rev-mengurai <melakukan>`
Ini bekerja terbaik bagi saya karena hal ini juga akan bekerja pada cache lokal remote cabang sepertiremote/asal/master
, di managit branch --mengandung
tidak't bekerja.Ini mencakup lebih dari OP's pertanyaan tentang "saat ini cabang" tapi saya merasa bodoh untuk bertanya "setiap cabang" versi dari pertanyaan ini jadi saya memutuskan untuk posting di sini pula.
Itu akan kembali target cabang nama jika komit id ada di cabang itu. Jika perintah akan gagal.
Karena pertanyaan ini memiliki beberapa nice scripty jawaban, aku'm menambahkan favorit saya.
Yang satu ini akan menunjukkan kepada anda, untuk yang terakhir
$n
melakukan$br
yang berisi masing-masing cabang:Ini serupa tetapi tidak sama untuk daftar cabang: