Pertanyaan Bagaimana cara mencantumkan cabang yang berisi commit yang diberikan?


Bagaimana saya bisa meminta git untuk menemukan cabang mana yang berisi commit yang diberikan? gitk biasanya akan mencantumkan cabang-cabangnya, kecuali jika terlalu banyak, dalam hal ini hanya mengatakan "banyak (38)" atau sesuatu seperti itu. Saya perlu mengetahui daftar lengkapnya, atau setidaknya apakah beberapa cabang mengandung komit.


877
2017-09-14 04:03


asal


Jawaban:


Dari halaman manual git-branch:

 git branch --contains <commit>

Hanya daftar cabang yang berisi commit yang ditentukan (HEAD jika tidak ditentukan). Implies --list.


 git branch -r --contains <commit>

Daftar cabang pelacakan jarak jauh juga (seperti yang disebutkan di pengguna3941992's menjawab di bawah) yaitu "cabang lokal yang memiliki hubungan langsung ke cabang jarak jauh".


Lihat juga ini siap artikel.

Itu --contains tag akan mencari tahu apakah komit tertentu telah dibawa masuk ke cabang Anda. Mungkin Anda telah mendapatkan SHA komit dari patch yang Anda pikir telah Anda terapkan, atau Anda hanya ingin memeriksa apakah commit untuk proyek open source favorit Anda yang mengurangi penggunaan memori hingga 75% sudah masuk.

$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <nick@quaran.to>
Date:   Wed Apr 1 20:38:59 2009 -0400

    Green all around, finally.

$ git branch --contains d590f2
  tests
* master

catatan: jika komit ada di a cabang pelacakan jarak jauh, Tambahkan -a pilihan.
(sebagai MichielB komentar di bawah)

git branch -a --contains <commit>

MatrixFrog berkomentar bahwa itu hanya menunjukkan cabang mana yang mengandung itu tepat melakukan.
Jika Anda ingin mengetahui cabang mana yang mengandung komit "setara" (yaitu cabang mana yang dipilih ceri), itu git cherry:

Karena git cherry  membandingkan changeset daripada id commit (sha1), Kamu dapat memakai git cherry untuk mengetahui apakah komit yang Anda buat secara lokal telah diterapkan <upstream> di bawah id komit yang berbeda.
  Misalnya, ini akan terjadi jika Anda memberi makan tambalan <upstream> melalui email daripada mendorong atau menarik komit secara langsung.

           __*__*__*__*__> <upstream>
          /
fork-point
          \__+__+__-__+__+__-__+__> <head>

(Di sini, komit ditandai '-'tidak akan muncul dengan git cherry, artinya mereka sudah hadir di <upstream>.)


1182
2017-09-14 04:08



Anda dapat menjalankan:

git log <SHA1>..HEAD --ancestry-path --merges

Dari komentar komit terakhir dalam output yang Anda temukan cabang asli nama

Contoh:

       c---e---g--- feature
      /         \
-a---b---d---f---h---j--- master

git log e..master --ancestry-path --merges

commit h
Merge: g f
Author: Eugen Konkov <>
Date:   Sat Oct 1 00:54:18 2016 +0300

    Merge branch 'feature' into master

10
2017-10-29 13:53