Rumah >alat pembangunan >git >Kongsi cara yang elegan untuk memainkan aliran kerja git

Kongsi cara yang elegan untuk memainkan aliran kerja git

藏色散人
藏色散人ke hadapan
2023-01-13 15:44:211971semak imbas

Dalam pembangunan, sama ada pasukan membangunkan projek bersama-sama atau anda membangunkan projek secara bebas. Tidak dapat dielakkan untuk berurusan dengan git. Menghadapi senario pembangunan yang berbeza, mungkin setiap pasukan mempunyai git工作流 sendiri. Di sini, saya ingin berkongsi gitlab berdasarkan git工作流 yang pasukan saya sedang gunakan. Mari berbincang bersama.

Proses git terstandard boleh mengurangkan kebarangkalian ralat kami, dan kami tidak akan sering menghadapi masalah git, dan kemudian mencari sekumpulan penggunaan git lanjutan. Kaedah git kami sebenarnya hanya memerlukan anda mengetahui operasi git asas, dan kemudian menyeragamkan operasi, dan pada dasarnya anda tidak akan menghadapi masalah git, supaya semua orang boleh menghabiskan masa mereka untuk perniagaan. Pada akhirnya, saya berharap semua orang akan belajar git apabila mereka berminat, dan bukannya apabila mereka menghadapi masalah dan segera mencari jawapan

Kaedah aliran kerja git kami terutamanya Ia dibahagikan kepada cawangan berikut:

  • master cawangan, kod stabil terkini
  • vx.x.x cawangan, cawangan versi, x.x.x ialah nombor versi pembangunan ini.
  • feat-xxx Cawangan ciri (fungsi baharu)
  • fix-xxx cawangan pembaikan cawangan

Cawangan di atas adalah apa yang kita perlukan dalam pembangunan Cipta dan gunakan cawangan selalunya. Mari kita bincangkan tentang maksud setiap cawangan secara terperinci di bawah.

masterCawangan mewakili versi kod stabil terkini, yang biasanya digabungkan selepas kod cawangan versi atau cawangan pembaikan berada dalam talian.

feat-xxx Cawangan mewakili cawangan yang dicipta untuk membangunkan ciri baharu versi tertentu.

vx.x.x mewakili cawangan versi Ini adalah cawangan yang kami buat daripada master di bawah nama nombor versi ini sebelum permulaan setiap versi. Contohnya, nombor versi ialah 2.0.1, kemudian cawangan versi ialah v2.0.1. Kemudian tunggu sehingga ciri baharu versi ini dibangunkan pada feat-xxx dan lulus ujian asap, kemudian pergi ke gitlab dan gabungkan mr ke dalam cabang versi ini. Selepas setiap ujian persekitaran lulus, gabungkan kod cawangan versi ke dalam master, dan kemudian padamkan cawangan versi ini.

fix-xxx mewakili cawangan pembaikan Biasanya apabila menangani masalah dalam talian, cawangan yang dinamakan sempena nama kecacatan dibuat Selepas ujian kecacatan lulus, mr digabungkan ke dalam cawangan master. >

Nota: Perincian di sini ialah maklumat

yang dibangunkan dan diserahkan pada cawangan ciri secara amnya dianggap sebagai maklumat yang tidak berguna dan akan digabungkan menjadi commit apabila digabungkan ke dalam cawangan versi (kerana kami Use commit untuk bergabung, jadi hanya semak pilihan gitlab apabila memulakan permintaan mr), dan selepas ujian, sama ada untuk membetulkan pepijat semasa proses ujian atau untuk mengoptimumkan fungsi, squash akan semua Terpelihara, ini tujuan adalah amaran, kerana saya berharap situasi terbaik adalah melancarkan ujian dengan segera Walaupun sukar untuk mencapai matlamat ini, commit maklumat yang ditinggalkan dapat membantu kami menyemak setiap cawangan commit

Fungsinya. seperti yang diterangkan di atas, dan kemudian mari kita bincangkan tentang cara melakukan beberapa senario klasik yang kami bangunkan:

Senario pertama: lelaran pembangunan biasa

Kami membangunkan 1.0 berdasarkan keperluan ini Ambil versi .0 sebagai contoh. Terdapat dua modul berfungsi dalam yang satu ini perlu menambah butang, dan satu lagi perlu menambah jadual

sequenceDiagram
master->>v1.0.0: 从master切出 v1.0.0
master->>feat-add-button: 从master切出 feat-add-button
master->>feat-add-form: 从master切出 feat-add-button
feat-add-form->>feat-add-form: 开发完成
feat-add-button->>feat-add-button: 开发完成
feat-add-button->>v1.0.0: 在gitlab发起mr到v1.0.0,并合并所有commit
feat-add-form->>v1.0.0: 在gitlab发起mr到v1.0.0,并合并所有commit
v1.0.0->>v1.0.0: 提测
feat-add-button->>feat-add-button: 修复测试bug
feat-add-button->>v1.0.0: 将修复的 commit cherry pick到 v1.0.0
v1.0.0->>master: 在gitlab上mr到master,并将合并信息改成 v1.0.0

Kongsi cara yang elegan untuk memainkan aliran kerja git

melalui urutan di atas. rajah. , seperti yang anda lihat, kami menamakan cawangan versi

selepas versi yang akan kami mulakan, dan juga mencipta dua cabang ciri v1.0.0 dan feat-add-button berdasarkan dua fungsi versi ini, dan kemudian menunggu untuk pembangunan fungsi selesai Kemudian mulakan feat-add-form melalui gitlab (perhatikan bahawa pilihan gabungan mr mesti ditandakan di sini) untuk bergabung menjadi commit, kemudian kod cawangan v1.0.0 akan mengalir dari persekitaran dev kepada persekitaran pengeluaran. Antaranya, jika terdapat apa-apa yang perlu diperbaiki atau dioptimumkan, cawangan ciri akan diubah suai dahulu, dan kemudian v1.0.0 dipindahkan ke cawangan versi. Selepas pergi ke dalam talian, padamkan cawangan versi dan cawangan ciri berikut. cherry pick

Versi kod yang diuruskan melalui proses ini sangat jelas Ini adalah sebahagian daripada serpihan induk yang dipintas

Kongsi cara yang elegan untuk memainkan aliran kerja git

Terdapat satu lagi adegan dalam proses lelaran biasa. . Iaitu, semasa proses pembangunan, PM tiba-tiba datang dan mengatakan bahawa disebabkan beberapa jenis force majeure, satu fungsi perlu dipotong. Pada masa ini, jika kod itu belum diuji lagi, atau fungsinya agak mudah, ia tidak terlalu menyusahkan untuk menanganinya. Tetapi jika ya, fungsi anda dan kod rakan sekerja lain sedang diuji, dan beberapa pepijat telah diperbaiki semuanya saling berkaitan, terutamanya keperluan yang melibatkan pengubahsuaian banyak fail. Ia akan menjadi sangat menyusahkan untuk dikendalikan pada masa ini. , bukan sahaja anda perlu melihat kod orang lain, tetapi anda juga perlu berhati-hati agar tidak membuat kesilapan dalam kod anda sendiri. Pada masa ini, ia adalah sangat mudah dalam proses kami Hanya padamkan cawangan versi sedia ada, dan kemudian kumpulkan semula cawangan ciri yang perlu berada dalam talian. Dapat dilihat bahawa cawangan versi digabungkan oleh cawangan ciri, iaitu, cawangan versi boleh digabungkan secara sewenang-wenang oleh cawangan ciri yang berbeza. Ini lebih mudah untuk dikendalikan

Senario kedua ialah pembaikan pepijat dalam talian

Kami mengambil peristiwa klik butang yang perlu diperbaiki dalam talian sebagai contoh

sequenceDiagram
master->>fix-button-click: 从master切出 fix-button-click
fix-button-click->>fix-button-click: 修复问题并测试
fix-button-click->>master: 从gitlab发起mr合并到master
Malah, di sini Prosesnya tidak jauh berbeza daripada di atas, tetapi apa yang perlu diperhatikan di sini ialah apabila membetulkan masalah dalam talian, satu komit diperlukan untuk setiap pepijat, dan komit tidak digabungkan apabila bergabung ke dalam induk. Dan maklumat gabungan perlu diubah suai kepada nombor versi ini. Sebagai contoh, kali ini ia adalah v1.0.1

Senario ketiga ialah pembangunan selari berbilang versi

Senario ini tidak berbeza daripada senario lelaran biasa, ia hanya bergantung pada sama ada anda mempunyai berbilang versi, jadi buat Cawangan versi yang sepadan sudah memadai. Cuma ikut proses lelaran biasa untuk setiap cawangan versi.

S&J

S: Mengapa tiada cawangan yang sepadan dengan persekitaran seperti dev dan test, supaya push boleh digunakan

J: Proses kami telah berhenti menggunakan ini. Terdapat beberapa sebab,

  • Selepas ujian kod, dari dev ke ujian, malah ke persekitaran uat (pra-keluaran), jika terdapat perubahan kod dalam persekitaran yang berbeza, maka untuk memastikan kod cawangan ini konsisten, adalah perlu Menyegerakkan kod ke setiap cawangan persekitaran agak menyusahkan. Masalah ini tidak wujud dengan cawangan versi Hanya terdapat satu cawangan versi, yang boleh sepadan dengan pelbagai persekitaran.

  • Mudah untuk pembangunan selari berbilang versi. Cawangan berbilang versi boleh dibuat, yang lebih mudah untuk digunakan ke persekitaran ujian yang berbeza semasa pembangunan selari. Jika modul antara versi tidak berkait rapat, anda juga boleh mengujinya secara selari.

  • Semantik. Cawangan versi boleh digunakan untuk mengetahui cawangan mana yang sedang dibangunkan melalui nama cawangan.

S: Bagaimana untuk menangani perubahan dalam cawangan induk

J: Jika terdapat perubahan dalam cawangan induk, gabungkannya ke dalam cawangan berfungsi anda sendiri tepat pada masanya untuk mengelakkan konflik dengan kod ahli lain Jika terdapat konflik

Pembelajaran yang disyorkan: "Tutorial Video Git"

Atas ialah kandungan terperinci Kongsi cara yang elegan untuk memainkan aliran kerja git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam