Anda mungkin mendapat manfaat dari alur kerja yang dijelaskan oleh Scott Chacon di Pro Git . Dalam alur kerja ini, Anda memiliki dua cabang yang selalu ada, kuasai , dan kembangkan .
master mewakili versi paling stabil dari proyek Anda dan Anda hanya akan menggunakan untuk produksi dari cabang ini.
mengembangkan berisi perubahan yang sedang berlangsung dan mungkin belum tentu siap untuk produksi.
Dari cabang pengembangan , Anda membuat cabang topik untuk mengerjakan fitur dan perbaikan individual. Setelah fitur / perbaikan Anda siap untuk digunakan, Anda menggabungkannya ke dalam pengembangan , di mana Anda dapat menguji bagaimana ia berinteraksi dengan cabang topik lain yang telah digabungkan oleh rekan kerja Anda. Setelah berkembang dalam kondisi stabil, gabungkan menjadi master . Itu harus selalu aman untuk digunakan untuk produksi dari master .
Scott menggambarkan cabang-cabang yang sudah berjalan lama ini sebagai "silo" kode, di mana kode di cabang yang kurang stabil pada akhirnya akan "lulus" ke yang dianggap lebih stabil setelah pengujian dan persetujuan umum oleh tim Anda.
Langkah demi langkah, alur kerja Anda di bawah model ini mungkin terlihat seperti ini:
- Anda perlu memperbaiki bug.
- Buat cabang yang disebut myfix yang didasarkan pada mengembangkan cabang.
- Kerjakan bug di cabang topik ini sampai diperbaiki.
- Gabungkan perbaikan saya ke dalam pengembangan . Jalankan tes.
- Anda menemukan konflik memperbaiki Anda dengan cabang topik yang lain hisfix bahwa rekan kerja Anda bergabung ke dalam mengembangkan sementara Anda bekerja pada memperbaiki Anda.
- Buat lebih banyak perubahan di cabang myfix untuk menangani konflik ini.
- Gabungkan perbaikan saya ke dalam mengembangkan dan menjalankan tes lagi.
- Semuanya bekerja dengan baik. Gabung berkembang menjadi master .
- Menyebarkan ke produksi dari master kapan saja, karena Anda tahu itu stabil.
Untuk detail lebih lanjut tentang alur kerja ini, periksa bab Branching Workflows di Pro Git.
develop
adalah 'solusi' yang tidak perlu untuk masalah yang tidak dimiliki git. Sejauh yang saya tahu keberhasilan adalah karena artikel yang ditulis dengan baik jika salah arah dengan tidak ada komentar diperbolehkan. Ini artikel balasan barro.github.io/2016/02/...Setelah masuk sebagai seorang pemula mencoba menemukan strategi lurus ke depan untuk mengajar ke devs lain yang tidak pernah menggunakan kontrol sumber. Ini adalah yang sesuai dengan http://nvie.com/posts/a-successful-git-branching-model/ Saya mencoba menggunakan alur kerja GIT standar yang ada di halaman manual tetapi sedikit membingungkan saya dan audiens saya sepenuhnya.
Selama 6 bulan terakhir saya hanya perlu memperbaiki konflik dua kali. Saya telah menambahkan langkah-langkah untuk selalu menguji setelah penggabungan dan untuk 'mengambil dan menggabungkan "atau' menarik -rebase" banyak (sekali di pagi dan sore hari) saat mengembangkan fitur. Kami juga menggunakan github.com sebagai tempat utama untuk menarik kode terbaru.
sumber
default master branch
TIDAK digunakan yang paling sering menjadi pengembang dalam hal iniA successful Git branching model
(Buat komentar saya di atas itu jawaban sendiri, seperti yang seharusnya saya lakukan sebelumnya.)
Dari Scott Chacon of Github:
Lihat seluruh artikel untuk lebih jelasnya: http://scottchacon.com/2011/08/31/github-flow.html
Perhatikan bahwa "tarik permintaan" adalah penemuan Github, dan itu adalah sesuatu yang dimasukkan ke situs web mereka, bukan Git itu sendiri: https://help.github.com/articles/using-pull-requests/
sumber
Gunakan
master
cabang sebagai cabang pengembangan Anda dan buat cabang rilis untuk melakukan perbaikan bug.Segala fitur baru akan berlangsung
master
selama jendela pengembangan (baik dilakukan secara langsung atau sebagai cabang topik dengan permintaan-tarik, terserah Anda - tidak ditampilkan dalam grafik). Setelah semua fitur yang Anda rencanakan diimplementasikan, masukkan pembekuan fitur, dan lakukan pengujian. Saat Anda senang, tandai rilis inimaster
sebagaiv1.0
.Seiring waktu pengguna Anda akan menemukan bug di
v1.0
sehingga Anda akan ingin membuat cabang dari tag itu (mis. Beri nama setelah rilis1.0
) dan perbaiki bug tersebut di cabang. Ketika Anda sudah memiliki cukup bug yang diperbaiki yang menurut Anda menjamin rilis baru kemudian beri tag sebagaiv1.0.1
dan gabungkan kembalimaster
.Sementara itu jendela pengembangan baru dapat terjadi pada
master
cabang yang pada akhirnya akan ditandai sebagaiv1.1
.Bilas & ulangi.
Ini mengikuti logika penomoran Semantic Versioning .
sumber
1.0.1
perubahan Anda kembali kemaster
1.1
pada master setelah penggabungan1.0.1
- ini membantu meminimalkan kebingungan.1.1
adalah cabang rilis dan memiliki tag yang mewakili keadaan pasti satu atau lebih rilis. Rebasing cabang itu akan menyebabkan Anda kehilangan representasi itu. Saya sangat merekomendasikan pengaturan cabang rilis Anda untuk menolak dorongan paksa untuk mencegah hal ini.Dalam VCS, memiliki cabang "master" dengan cepat menunjukkan batasnya karena Anda tidak dapat mengejar semua upaya pengembangan pada saat yang sama di satu cabang.
Itu berarti Anda perlu tahu kapan harus bercabang .
Tetapi dalam sebuah DVCS (seperti dalam VCS "Terdesentralisasi"), Anda juga memiliki masalah publikasi , dengan cabang-cabang yang Anda simpan lokal untuk repositori Anda, dan cabang-cabang yang Anda dorong atau tarik dari situ.
Dalam konteks ini, mulailah dengan mengidentifikasi upaya pengembangan bersamaan Anda, dan putuskan proses publikasi (push / pull). Misalnya (dan ini bukan satu-satunya cara):
tidak ada yang harus mendorong langsung ke prod (karenanya hanya baca)
Setiap orang dapat mendorong untuk melepaskan untuk memperbarui rilis berikutnya.
Setiap orang dapat menarik dari rilis tersebut untuk memperbarui proses konsolidasi lokalnya.
Ada proses manajemen rilis lain, karena pertanyaan SO ini membuktikan .
sumber
Bacalah Alur Kerja Git ReinH untuk tim Agile di sini: http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html
Ini bekerja sangat baik untuk tim kecil. Tujuannya di sini adalah untuk memastikan segala sesuatu yang berpotensi tidak stabil masuk ke cabang tertentu. Hanya bergabung kembali untuk dikuasai ketika Anda siap untuk semua orang yang bekerja di luar cabang fitur untuk menggunakannya.
Catatan: strategi ini hampir tidak spesifik git, tetapi git membuat penerapan strategi ini cukup mudah.
sumber