Rumah > Peranti teknologi > industri IT > Lompat Mula Git: Bercabang di Git

Lompat Mula Git: Bercabang di Git

Christopher Nolan
Lepaskan: 2025-02-18 10:12:11
asal
960 orang telah melayarinya

cawangan git: alat untuk kerjasama yang cekap

Artikel ini dikutip dari buku "Jump Start Git", yang boleh didapati secara percuma kepada ahli Premium SitePoint. Buku -buku fizikal boleh didapati di kedai buku utama di seluruh dunia, dan anda juga boleh memerintahkan mereka di sini. Semoga anda suka dan mendapat manfaat daripadanya!

Dalam Bab 1, saya bercakap tentang ketakutan awal saya untuk mencuba perkara -perkara baru dalam projek saya. Bagaimana jika anda mencuba beberapa ciri bercita -cita tinggi tetapi memecahkan bahagian yang sebelum ini berfungsi? Ciri cawangan Git sempurna menyelesaikan masalah ini.

Ringkasan mata utama

  • Cawangan git membolehkan membuat salinan projek untuk bereksperimen tanpa menjejaskan projek asal. Jika percubaan berjaya, mudah untuk menggabungkan unsur -unsur eksperimen ke cawangan utama.
  • Cawangan membenarkan pelbagai tugas diproses serentak tanpa mengganggu satu sama lain. Ini sangat berguna apabila menunggu kelulusan satu ciri sambil memerlukan memproses ciri lain. Cawangan juga boleh membuat kod lebih mudah difahami dengan memisahkan idea yang berbeza.
  • Buat cawangan dalam git menggunakan perintah git branch [分支名称]. Tukar ke cawangan ini untuk menggunakan git checkout [分支名称]. Memadam cawangan menggunakan git branch -D [分支名称], tetapi disyorkan untuk tidak memadam cawangan kecuali perlu.
  • Menggabungkan cawangan dalam Git adalah proses yang mudah. Selepas memastikan bahawa cawangan yang diperlukan aktif, gunakan arahan git merge [分支名称]. Walau bagaimanapun, ini boleh mewujudkan gelung dalam sejarah projek, yang sukar untuk menavigasi dalam pasukan besar. Bab seterusnya akan meneroka kaedah gabungan yang tidak membuat gelung.

Apa itu cawangan?

Mewujudkan cawangan baru dalam projek itu pada dasarnya bermakna membuat salinan projek. Anda boleh menggunakan salinan ini untuk mencuba tanpa menjejaskan projek asal. Jadi jika eksperimen gagal, anda boleh menyerahkannya dan kembali ke projek asal - cawangan utama.

Dan, kemudian, jika anda mengubah fikiran anda, anda boleh memulihkan dengan mudah ke keadaan projek sebelum bergabung.

Oleh itu, cawangan dalam Git adalah laluan pembangunan bebas. Anda boleh membuat komitmen baru di cawangan tanpa menjejaskan cawangan lain. Kemudahan penggunaan cawangan adalah salah satu ciri terbaik Git. (Walaupun pilihan kawalan versi lain (seperti CVS) juga mempunyai pilihan cawangan, pengalaman menggabungkan cawangan pada CVS sangat membosankan. Jika anda mempunyai pengalaman menggunakan cawangan dalam sistem kawalan versi lain, yakinlah bahawa menggunakan cawangan di Git adalah sama sekali berbeza. )

Dalam git, anda berada di cawangan utama secara lalai. Nama "Master" tidak bermakna ia lebih unggul dalam apa cara sekalipun. Ini hanya pepatah konvensional.

NOTA: Perjanjian cawangan

Walaupun anda bebas menggunakan cawangan yang berbeza sebagai cawangan asas dalam Git, orang biasanya mengharapkan untuk mencari kod terkini untuk projek tertentu di cawangan utama.

Anda mungkin berhujah bahawa tiada cawangan diperlukan kerana keupayaan untuk kembali kepada apa -apa komit. Tetapi bayangkan bahawa anda perlu menunjukkan kerja anda kepada penyelia anda sambil membangunkan ciri baru yang bukan sebahagian daripada kerja yang telah anda lakukan. Oleh kerana cawangan digunakan untuk memisahkan idea yang berbeza, ia menjadikan kod dalam repositori mudah difahami. Di samping itu, cawangan membolehkan anda mengekalkan komitmen penting hanya di Cawangan Master atau Master.

Satu lagi penggunaan cawangan

ialah mereka membolehkan anda mengendalikan pelbagai perkara pada masa yang sama tanpa mengganggu satu sama lain. Katakan anda menyerahkan Ciri 1 untuk semakan, tetapi ia akan mengambil sedikit masa untuk penyelia anda untuk mengkaji semula. Pada masa yang sama, anda perlu mengendalikan Fungsi 2. Dalam kes ini, cawangan itu berguna. Sekiranya anda mengusahakan idea baru anda di cawangan baru, anda boleh beralih ke cawangan anda pada bila -bila masa untuk memulihkan repositori ke keadaan terdahulu, yang tidak mengandungi sebarang kod yang berkaitan dengan idea anda.

Sekarang mari kita mula menggunakan cawangan di Git. Untuk melihat senarai cawangan dan cawangan semasa yang anda gunakan, jalankan arahan berikut:

<code>git branch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika anda telah mengklonkan repositori anda atau menubuhkan repositori jauh, anda juga boleh melihat cawangan jauh. Tambah sahaja -a: selepas arahan di atas

<code>git branch -a</code>
Salin selepas log masuk
Salin selepas log masuk

Jump Start Git: Branching in Git Seperti yang ditunjukkan di atas, cawangan merah menunjukkan bahawa ia terletak di repositori jauh. Dalam contoh kita, kita dapat melihat pelbagai cawangan yang wujud di repositori jauh asal.

Buat cawangan

Terdapat beberapa cara untuk membuat cawangan di Git. Untuk membuat cawangan baru dan simpan di cawangan semasa, jalankan arahan berikut:

di sini,
<code>git branch test_branch</code>
Salin selepas log masuk
adalah nama cawangan yang dicipta. Walau bagaimanapun, selepas berjalan

, nampaknya cawangan aktif masih merupakan cawangan utama. Untuk menukar cawangan aktif, kita boleh menjalankan perintah checkout (seperti yang ditunjukkan di bawah): test_branch <code>git branch</code>

<code>git checkout test_branch</code>
Salin selepas log masuk

anda juga boleh menggabungkan dua arahan di atas untuk membuat dan menyemak cawangan baru dalam satu arahan dengan menambah -b selepas perintah checkout: Jump Start Git: Branching in Git

<code>git checkout -b new_test_branch</code>
Salin selepas log masuk
Cawangan yang kami buat hanya berdasarkan komit terkini cawangan yang aktif (dalam hal ini cawangan utama). Jika anda ingin membuat cawangan (mis. Jump Start Git: Branching in Git

untuk menamakan semula cawangan semasa ke cafb55d, jalankan arahan berikut: old_commit_branch

<code>git checkout -b old_commit_branch cafb55d</code>
Salin selepas log masuk

Padam cawangan Jump Start Git: Branching in Git

Untuk memadam cawangan, jalankan arahan berikut: renamed_branch

<code>git branch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jump Start Git: Branching in Git

NOTA: Jangan padamkan cawangan melainkan perlu

Oleh kerana sebenarnya tidak ada kelemahan untuk menjaga cawangan, saya cadangkan tidak memadamkannya kecuali bilangan cawangan di repositori menjadi terlalu besar untuk dikendalikan.

pilihan

yang digunakan di atas akan memadam cawangan walaupun cawangan tidak disegerakkan dengan cawangan jauh. Ini bermakna jika anda mempunyai komit yang tidak ditolak di cawangan semasa anda, -D masih akan memadamkan cawangan anda tanpa sebarang amaran. Untuk memastikan anda tidak kehilangan data, anda boleh menggunakan -D sebagai alternatif kepada -d. -D Padam cawangan hanya jika mereka telah disegerakkan dengan cawangan jauh. Oleh kerana cawangan kami belum disegerakkan, mari kita lihat apa yang berlaku jika kita menggunakan -d, seperti yang ditunjukkan di bawah: -d

Jump Start Git: Branching in Git seperti yang anda lihat, Git akan memberi amaran kepada anda dan membatalkan operasi kerana data tidak digabungkan dengan cawangan.

Cawangan dan kepala

Sekarang kita mempunyai peluang untuk mencuba asas -asas cawangan, mari kita luangkan masa untuk membincangkan bagaimana cawangan bekerja di Git dan memperkenalkan konsep penting: kepala.

Seperti yang disebutkan di atas, cawangan hanya hubungan antara komitmen yang berbeza, atau melalui jalan komit. Harus diingat bahawa apabila menggunakan cawangan, kepala cawangan menunjuk kepada komit terkini di cawangan. Saya akan menyebut kepala beberapa kali dalam bab -bab berikut. Di Git, kepala menunjukkan komitmen terkini di cawangan. Dalam erti kata lain, ia merujuk kepada bahagian atas cawangan.

Cawangan pada dasarnya adalah penunjuk kepada komitmen yang mempunyai komitmen ibu bapa, komitmen nenek, dan sebagainya. Rantai komit ini membentuk jalan yang saya nyatakan di atas. Jadi, bagaimana untuk menghubungkan cawangan dan kepala? Nah, bahagian atas kepala dan titik cawangan semasa untuk komit yang sama. Mari lihat carta untuk menggambarkan idea ini:

seperti yang ditunjukkan di atas, Jump Start Git: Branching in Git pada mulanya merupakan cawangan aktif, dan titik kepala untuk melakukan C. Commit a adalah komitmen asas, tanpa sebarang orang tua, jadi komitmen dalam

disusun dalam urutan terbalik dalam masa (yang juga merupakan jalan yang saya nyatakan di atas) adalah C → B → A. Komitmen dalam

adalah E → D → B → A. Ketua menunjuk kepada komitmen terkini cawangan aktif branch_A, iaitu, komit C. Apabila kita menambah komit, ia akan ditambah ke cawangan aktif. Selepas melakukan, branch_A menunjuk kepada F, dan cawangan mengikuti F → C → B → A, sementara branch_B tetap sama. Ketua kini menunjuk kepada F. Sekali lagi, apabila kita menambah komit lain, perubahan itu ditunjukkan dalam angka itu. branch_A branch_A branch_B cawangan maju: gabungan cawangan

Seperti yang disebutkan sebelumnya, salah satu kelebihan terbesar Git adalah bahawa ia sangat mudah untuk menggabungkan cawangan. Sekarang mari kita lihat bagaimana ia dilakukan.

kami akan membuat dua cawangan baru - new_feature dan another_feature - dan menambah beberapa komitmen maya. Memeriksa sejarah setiap cawangan menunjukkan kepada kami bahawa cawangan another_feature memimpin satu komit seperti berikut:

Jump Start Git: Branching in Git

Keadaan ini boleh ditunjukkan dalam gambar di bawah. Setiap bulatan mewakili komit, dan nama cawangan menunjuk ke kepalanya (atas cawangan).

Jump Start Git: Branching in Git untuk menggabungkan

dengan cawangan utama, jalankan arahan berikut (pertama pastikan cawangan utama aktif):

new_feature

Hasilnya boleh ditunjukkan dalam angka di bawah:
<code>git branch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

untuk menggabungkan Jump Start Git: Branching in Git dengan

, hanya jalankan arahan berikut (pastikan cawangan

aktif): another_feature new_feature new_feature Hasilnya boleh ditunjukkan dalam angka di bawah:

<code>git branch -a</code>
Salin selepas log masuk
Salin selepas log masuk

Petua penting: Perhatikan kitaran Jump Start Git: Branching in Git

Imej di atas menunjukkan bahawa gabungan ini mencipta gelung di dua komitmen dalam sejarah projek anda di mana aliran kerja menyimpang dan menumpu masing -masing. Gelung sedemikian mungkin tidak menjadi masalah apabila bekerja bersendirian atau dalam pasukan kecil. Walau bagaimanapun, dalam pasukan yang lebih besar - mungkin terdapat banyak komitmen sejak anda menyimpang dari cawangan utama - gelung besar ini menjadikannya sukar untuk menavigasi sejarah dan memahami perubahan. Kami akan meneroka cara untuk menggabungkan cawangan menggunakan perintah rebase tanpa membuat gelung dalam bab 6.

Tidak ada "konflik" dalam gabungan ini. Alasannya adalah mudah, tiada komitmen baru ditambah ke cawangan

berbanding dengan cawangan

. Konflik dalam Git berlaku apabila bahagian yang sama dari fail yang sama diubahsuai dalam komitmen bukan awam di kedua-dua cawangan. Git melemparkan konflik untuk memastikan anda tidak kehilangan sebarang data. Jump Start Git: Branching in Git

kita akan membincangkan konflik secara terperinci dalam bab seterusnya. Seperti yang saya nyatakan sebelum ini, cawangan boleh divisualisasikan dengan jalan komitmen yang mudah. Apabila kita menggabungkan cawangan dan tidak ada konflik, seperti di atas, hanya perubahan jalan cawangan dan kepala cawangan dikemas kini. Ini dipanggil gabungan jenis ke hadapan yang cepat.

another_feature Satu lagi cara untuk menggabungkan cawangan adalah gabungan ke hadapan yang tidak pantas, dengan menambahkan new_feature selepas perintah gabungan. Dengan cara ini, komit baru dicipta di cawangan asas dengan perubahan dari cawangan lain. Anda juga perlu menentukan mesej penyerahan:

<code>git branch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh di atas, bekas (gabungan new_feature dengan cawangan utama) adalah gabungan ke hadapan yang cepat, sementara yang terakhir adalah gabungan ke hadapan yang tidak pantas dengan komit gabungan.

Walaupun gabungan gaya ke hadapan cepat adalah lalai, biasanya lebih baik menggunakan kaedah ke hadapan yang tidak cepat untuk bergabung dengan gabungan ke cawangan utama. Dalam jangka masa panjang, mengenal pasti komitmen baru yang menggabungkan ciri -ciri baru mungkin bermanfaat kerana secara logiknya memisahkan bahagian kod yang bertanggungjawab untuk ciri -ciri baru menjadi satu komit.

Kesimpulan

Apa yang telah anda pelajari?

Dalam bab ini, kita membincangkan cawangan apa dan bagaimana untuk menguruskannya dalam Git. Kami melihat membuat, mengubahsuai, memadam, dan menggabungkan cawangan.

Apa yang akan datang?

Saya telah bercakap tentang bagaimana Git baik untuk pemaju yang bekerja dengan pasukan. Ini diterokai dengan lebih terperinci dalam bab seterusnya, serta operasi dan arahan Git tertentu yang sering digunakan dalam pasukan yang diedarkan.

Soalan Lazim Mengenai Cawangan Git

  • Apakah tujuan utama cawangan git?

Cawangan Git adalah ciri yang kuat yang membolehkan pemaju membuat garis pembangunan berasingan. Ini amat berguna apabila berurusan dengan ciri -ciri baru atau pembetulan, kerana ia membolehkan anda mengasingkan kerja anda dari projek utama. Selepas ciri atau pembetulan selesai dan diuji, ia boleh digabungkan kembali ke projek utama. Ini memastikan bahawa projek utama tetap stabil dan membolehkan beberapa pemaju mengendalikan fungsi yang berbeza secara serentak tanpa mengganggu satu sama lain.

  • Bagaimana untuk membuat cawangan baru di Git?

Mewujudkan cawangan baru di Git adalah mudah. Anda boleh menggunakan perintah <code>git branch</code> diikuti dengan nama cawangan baru. Sebagai contoh, git branch new_feature akan membuat cawangan baru yang dipanggil "New_Feature". Untuk beralih ke cawangan ini, anda boleh menggunakan perintah git checkout seperti berikut: git checkout new_feature.

  • Bagaimana untuk menggabungkan cawangan dalam git?

Gabungkan cawangan dalam git menggunakan perintah git merge. Sebelum menggabungkan, anda perlu berada di cawangan yang anda mahu bergabung. Sebagai contoh, jika anda ingin menggabungkan cawangan bernama "New_Feature" ke dalam cawangan "Master", anda perlu beralih ke cawangan utama menggunakan git checkout master dan kemudian gunakan perintah git merge new_feature.

  • Apakah penunjuk cawangan git dan bagaimana ia berfungsi?

penunjuk cawangan git adalah fail yang mengandungi hash sha1 komit yang ditunjukkannya. Apabila anda membuat cawangan baru, Git mencipta penunjuk baru dan menggerakkannya bersama -sama dengan setiap komit baru yang anda buat. Ini membolehkan Git mengesan sejarah projek.

  • Bagaimana untuk memadam cawangan dalam git?

Padam cawangan dalam Git menggunakan arahan git branch -d diikuti dengan nama cawangan. Sebagai contoh, git branch -d old_feature akan memadam cawangan bernama "Old_Feature". Walau bagaimanapun, jika cawangan mempunyai komit yang tidak digabungkan ke cawangan lain, GIT akan menghalang anda daripada memadam cawangan. Untuk memaksa penghapusan, anda boleh menggunakan pilihan -D.

  • Apakah perbezaan antara penggabungan ke hadapan dan penggabungan tripartit di Git?

Fast forward gabungan dalam git adalah mungkin apabila terdapat laluan linear dari hujung cawangan semasa ke cawangan sasaran. Daripada membuat komit baru, Git menggerakkan penunjuk cawangan semasa ke cawangan sasaran. Sebaliknya, apabila tiada laluan linear, gabungan tripartit digunakan. GIT akan mewujudkan komit baru dengan dua ibu bapa, dengan berkesan menghubungkan kedua -dua cawangan.

  • Bagaimana untuk melihat semua cawangan dalam repositori git?

anda boleh melihat semua cawangan dalam repositori git menggunakan perintah <code>git branch</code> tanpa parameter. Ini akan menyenaraikan semua cawangan tempatan. Jika anda juga ingin melihat cawangan jauh, anda boleh menggunakan pilihan -a seperti berikut: <code>git branch -a</code>.

  • Bagaimana untuk menamakan semula cawangan di Git?

Namakan semula cawangan dalam Git menggunakan arahan git branch -m diikuti oleh nama lama dan baru. Sebagai contoh, git branch -m old_name new_name akan menamakan semula cawangan "old_name" kepada "new_name".

  • Apakah kepala pemisahan dalam git dan bagaimana untuk mengelakkannya?

Kepala yang disebarkan di Git berlaku apabila anda menyemak komit bukannya cawangan. Ini boleh berbahaya kerana apabila anda menyemak ke cawangan lain, sebarang perubahan yang anda buat akan hilang. Untuk mengelakkan ini, pastikan anda sentiasa menyemak cawangan dan bukannya melakukan.

  • Bagaimana menyelesaikan konflik apabila menggabungkan cawangan di Git?

Apabila menggabungkan cawangan dalam Git, konflik mungkin berlaku jika bahagian yang sama dari fail yang sama diubah suai di kedua -dua cawangan. GIT akan menandakan fail sebagai "tidak diturunkan", anda perlu menyelesaikan konflik secara manual. Anda boleh melakukan ini dengan membuka fail dalam editor teks, mencari tanda konflik (<<<<<<<), dan memutuskan perubahan yang perlu disimpan. Selepas semua konflik diselesaikan, anda boleh menambah fail menggunakan git add dan menyerahkannya menggunakan git commit.

Atas ialah kandungan terperinci Lompat Mula Git: Bercabang di Git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan