Saya memiliki repositori git dengan banyak cabang.
Bagaimana saya bisa tahu cabang mana yang sudah bergabung ke cabang master?
git branch --merged master
daftar cabang digabung menjadi master
git branch --merged
daftar cabang yang digabung ke dalam HEAD (yaitu ujung cabang saat ini)
git branch --no-merged
daftar cabang yang belum digabung
Secara default ini hanya berlaku untuk cabang lokal. The -a
bendera akan menunjukkan kedua cabang lokal dan remote, dan -r
bendera menunjukkan hanya cabang terpencil.
git branch --merged
dan kemudian menghapus cabang-cabang lokal dan jauh.git branch -a --merged/no-merged
itu juga berfungsi, tanpa membuat cabang pelacakan lokal dalam proses.git branch -r --merged/--no-merged
untuk hanya menemukan cabang yang jauh.--merged/--no-merged
membutuhkan argumen komit opsional setelahnya. Setidaknya dalam versi git saya (1.9.1), menambahkan-a
atau-r
menandai setelah itu memberi saya kesalahan fatal. Tambahkan-a
atau-r
sebelumnya--(no-)merged
.Anda dapat menggunakan
git merge-base
perintah untuk menemukan komit umum terbaru antara dua cabang. Jika komit itu sama dengan kepala cabang Anda, maka cabang telah sepenuhnya digabung.sumber
git branch -d
akan menolak untuk menghapus cabang yang belum digabungkan ke cabang saat ini. Tidak menghapus cabang saat ini .Ada solusi antarmuka grafis juga. Ketik saja
gitk --all
Jendela aplikasi baru akan meminta dengan representasi grafis dari seluruh repo Anda, di mana sangat mudah untuk menyadari jika cabang sudah digabung atau tidak
sumber
git
klien. Di Ubuntuapt-get install gitk
,.brew install git-gui
, untuk mendapatkangitk
di commandline.Saya menggunakan fungsi bash berikut seperti:
git-is-merged develop feature/new-feature
sumber
Gunakan
git merge-base <commit> <commit>
.Perintah ini menemukan leluhur bersama terbaik di antara dua commit. Dan jika nenek moyang yang sama identik dengan komit terakhir dari "cabang", maka kita dapat dengan aman berasumsi bahwa "cabang" telah digabung menjadi master.
Inilah langkah-langkahnya
git merge-base <commit-hash-step1> <commit-hash-step2>
.Info lebih lanjut tentang git merge-base https://git-scm.com/docs/git-merge-base .
sumber
master
digabungkanbranch
, dan kemudian 4 komitmen ditambahkanbranch
.git log -1 $(git merge-base base-branch feature-branch)
dan jika Anda melihatfeature-branch
di output, maka Anda tahu mereka digabungkan?Pada topik membersihkan cabang-cabang terpencil
Ini mencantumkan setiap cabang jarak jauh yang diikuti oleh cabang jarak jauh mana SHA terbaru mereka berada.
Ini berguna untuk membedakan cabang jarak jauh mana yang telah digabung tetapi tidak dihapus, dan mana yang belum digabung dan karenanya membusuk.
Jika Anda menggunakan 'tig' (seperti gitk tapi berbasis terminal) maka Anda bisa
untuk melihat riwayat komit cabang tanpa harus melakukan checkout
sumber
Untuk memverifikasi cabang mana yang digabungkan menjadi master, Anda harus menggunakan perintah ini:
git branch <flag[-r/-a/none]> --merged master
daftar semua cabang digabung menjadi master.git branch <flag[-r/-a/none]> --merged master | wc -l
hitung jumlah semua cabang yang digabung menjadi master.Bendera:
-a
flag - (semua) yang menunjukkan cabang jarak jauh dan lokal-r
flag - (jarak jauh) hanya menampilkan cabang jarak jauh<emptyFlag>
- menunjukkan lokal cabangmisalnya:
git branch -r --merged master
akan menunjukkan semua repositori jarak jauh yang digabung menjadi master.sumber
Berikut adalah teknik saya ketika saya perlu mencari tahu apakah cabang telah digabung, bahkan jika mungkin telah diubah kembali agar tetap up to date dengan cabang utama kami, yang merupakan skenario umum untuk cabang fitur.
Tidak satu pun dari pendekatan ini adalah bukti bodoh, tetapi saya telah menemukan mereka berguna berkali-kali.
1 Tampilkan log untuk semua cabang
Menggunakan alat visual seperti gitk atau TortoiseGit, atau cukup git log dengan --all, lihat sejarah untuk melihat semua penggabungan ke cabang utama. Anda harus dapat melihat apakah cabang fitur khusus ini telah digabung atau tidak.
2 Selalu hapus cabang jarak jauh ketika bergabung dalam cabang fitur
Jika Anda memiliki kebiasaan yang baik untuk selalu menghapus cabang lokal dan remote ketika Anda bergabung dalam cabang fitur, maka Anda dapat dengan mudah memperbarui dan memangkas remote di komputer lain dan cabang fitur akan hilang.
Untuk membantu mengingat hal ini, saya sudah menggunakan ekstensi git flow (edisi AVH) untuk membuat dan menggabungkan cabang-cabang fitur saya secara lokal, jadi saya menambahkan kait aliran git berikut untuk bertanya apakah saya juga ingin menghapus otomatis cabang jarak jauh.
Contoh membuat / menyelesaikan cabang fitur
.git / hooks / post-flow-fitur-selesai
3 Cari berdasarkan pesan komit
Jika Anda tidak selalu menghapus cabang jarak jauh, Anda masih bisa mencari komit yang sama untuk menentukan apakah cabang telah digabung atau belum. Perangkap di sini adalah jika cabang jarak jauh telah direstrukturisasi menjadi yang tidak dapat dikenali, seperti squashing commit atau mengubah pesan komit.
Contoh perintah pada cabang utama:
Di bash saya. Konfigurasi profil
sumber
git log --all --color --graph --decorate --topo-order --date=relative --abbrev-commit --pretty=format:"%C(green)%h %C(red bold)[%<(14)%ad] %Creset%s%Cred%d%C(blue) [%an]"
git log
Anda dapat menambahkan--merges
untuk hanya menampilkan komit gabungan. stackoverflow.com/a/25986615/134761Berikut ini adalah satu-liner kecil yang akan memberi tahu Anda jika cabang Anda saat ini menggabungkan atau kehabisan data dari cabang asal / master jarak jauh:
Saya menemukan pertanyaan ini ketika mengerjakan cabang fitur dan sering ingin memastikan bahwa saya memiliki karya terbaru yang dimasukkan ke dalam cabang kerja saya sendiri yang terpisah.
Untuk menggeneralisasi tes ini, saya telah menambahkan alias berikut ke ~ / .gitconfig saya:
Maka saya bisa menelepon:
untuk memeriksa apakah saya terkini.
sumber