Git

Cara Memetik Ceri di Git

Cara Memetik Ceri di Git
git cherry pick adalah ciri gabungan Git. Tetapi ada sedikit perbezaan dalam git cherry pick dan git merge. Juga, kes penggunaannya berbeza. Mari lihat bagaimana git merge berfungsi terlebih dahulu, kemudian bandingkan dengan git cherry pick. Dengan cara itu, anda akan memahami kapan menggunakan git merge dan kapan menggunakan git cherry pick.

Katakan, anda mempunyai repositori Git. Anda sedang mengusahakan tuan cawangan dan anda telah membuat beberapa komitmen (A, B dan C) pada tuan cawangan juga.

Sekarang, tiba-tiba anda mempunyai idea hebat. Oleh itu, anda membuat cawangan lain newidea. Kemudian, anda mula membuat komitmen (E, F, dan G) di sana.

Anda juga membuat beberapa perubahan pada tuan cawangan lagi dan menambah komit baru H.

Sekarang, jika idea baru anda berjaya, maka anda mungkin ingin menggabungkannya newidea cawangan ke tuan cawangan. Katakan, anda menggabungkannya. Ini akan mewujudkan komitmen baru Saya seperti yang anda lihat pada gambar di bawah. Komitmen baru akan mengandungi segalanya (semua perubahan dalam komit E, F, dan G) cawangan newidea.

Sekarang, katakan, anda tidak mahu menggabungkan semua komiten cawangan newidea kepada tuan cawangan. Anda hanya mahu menggabungkan perubahan (hanya perubahan berbeza) dalam komit F kepada tuan cawangan. Di sinilah pilihan cit git masuk. Git cherry pick membolehkan anda melakukannya. Anda hanya menemui hash dari komitmen yang ingin anda pilih dan masukkan ke cawangan yang anda mahukan. Sangat ringkas.

Dalam artikel ini, saya akan menunjukkan kepada anda bagaimana memilih ceri di Git. Oleh itu, mari kita mulakan.

Aliran Kerja Git Cherry Pick:

Di bahagian ini, saya akan menyiapkan repositori Git dengan cara yang anda akan faham mengapa pengambilan ceri git digunakan dan bagaimana memilih ceri di Git.

Pertama, mulakan repositori Git kosong demo ceri-pilih / seperti berikut:

$ git init cherry-pick-demo

Sekarang, arahkan ke repositori seperti berikut:

$ cd pilih-demo /

Sekarang, buat a utama.c fail dengan kandungan berikut:

Sekarang, tambahkan fail ke kawasan pementasan seperti berikut:

$ git tambah .

Sekarang, lakukan perubahan seperti berikut:

$ git komit -m 'komit awal'

Sekarang, buat a .gitignore fail dengan kandungan berikut:

Tambahkan fail ke kawasan pementasan.

$ git tambah .

Lakukan perubahan:

$ git komit -m 'ditambah .fail gitignore '

Seperti yang anda lihat, saya mempunyai 2 komitmen sekarang di saya tuan cawangan.

$ git log - talian

Sekarang, saya ingin mendorong repositori Git tempatan saya ke pelayan Git jauh supaya orang lain dapat mengerjakan repositori ini. Anda juga boleh menggunakan GitHub di sini. Saya akan menggunakan pelayan SSH tempatan untuk ini di sini.

Oleh itu, tambahkan URL repositori Git jauh seperti berikut:

$ git remote add origin git @ git.linuxhint.com: ~ / demo ceri-pilih.git

Sekarang, tolak tuan cawangan ke repositori Git jauh seperti berikut:

$ git push origin master

Sekarang, katakan bob ingin menyumbang kepada projek tersebut. Jadi, dia mengklon repositori Git di komputernya.

$ git klon git @ git.linuxhint.com: ~ / demo ceri-pilih.git myproject

Sekarang, bob menavigasi ke direktori projeknya.

$ cd projek saya /

Dia juga mempunyai 2 komitmen yang telah saya tambahkan.

$ git log - talian

Sekarang, bob mencipta ujian cabang untuk mencuba ideanya.

$ git checkout -b test

Dia memutuskan untuk menukar nilai pulangan dengan pemalar KECUALI_ KEBERHASILAN daripada stdlib perpustakaan.

Dia menambah perubahan pada kawasan pementasan.

$ git tambah .

Melakukan perubahan.

$ git commit -m 'digunakan EXIT_SUCCESS dan bukannya 0 sebagai nilai pulangan'

Sekarang, dia memutuskan untuk menggunakan fungsi printMessage () untuk mencetak mesej. Jadi, dia menulis fungsinya.

Dia melakukan perubahan lagi.

$ git tambah .
$ git commit -m 'fungsi printMessage () ditambah'

Kemudian, bob menggunakan fungsi dalam program.

Dia melakukan perubahan lagi.

$ git tambah .
$ git commit -m 'fungsi printMessage () terpakai untuk mencetak mesej'

Sekarang, bob mempunyai komitmen berikut di ujian cawangan.

Sekarang, bob mendorong cabang ujian ke repositori terpencil Git.

ujian asal $ git push

Sekarang, bob memanggil anda dan memberitahu anda tentang perubahan hebat yang dibuatnya. Oleh itu, anda mengambil perubahan pada repositori jarak jauh Git ke repositori tempatan anda sendiri.

$ git mengambil

Sekarang, anda melihat cawangan baru asal / ujian.

Anda juga menemui 3 komited baru yang dibuat bob.

$ git log - asal / ujian dalam talian

Sekarang, anda ingin tahu apa perubahan yang dibuat bob.

$ git log -p asal / ujian

Anda memutuskan untuk tidak mengganti nilai pulangan dengan EXIT_SUCCESS seperti yang dilakukan oleh bob.

Anda suka konsep menggunakan fungsi untuk mencetak mesej.

Anda juga suka melakukan ini.

Oleh itu, anda ingin menggabungkan 2 daripada 3 komited bob yang dibuat. Sekiranya anda telah menggunakan git merge untuk menggabungkan ujian cabang, maka ketiga-tiga komit akan berlaku. Tetapi, dengan ciri git cherry pick, anda hanya boleh menggabungkan komitmen yang anda suka.

Perhatikan bahawa semasa anda membuat ceri komited di Git, anda selalu bermula dengan komited tertua dan terus maju ke yang terbaru sedikit demi sedikit.

Sebelum, saya memilih ceri, yang utama.c fail kelihatan seperti berikut.

Sekarang, mari ceri pilih yang tertua dari 2 komited, 9a4e532 seperti berikut:

$ git pilih ceri 9a4e532

Konflik gabungan! Ini boleh berlaku.

Sekarang, buka utama.c fail dan perbaiki konflik penggabungan.

Fail akhir akan kelihatan seperti berikut.

Sekarang, tambahkan perubahan pada kawasan pementasan.

$ git tambah.

Sekarang, lakukan perubahan seperti berikut:

$ git cherry-pick - teruskan

NOTA: Anda juga boleh menggunakan git komit di sini juga. Terpulang pada anda. saya lebih suka git cherry-pick -teruskan kerana secara automatik ia akan menggunakan mesej komit dari komit yang saya pilih.

Sekarang, taipkan mesej komit anda di sini dan simpan failnya.

Komitmen baru harus ditambah.

Sekarang, ceri pilih komited seterusnya seperti berikut:

$ git memilih ceri 08ba5e7

Tiada konflik penggabungan. Hebat! Komitmen baru harus ditambah secara automatik.

Seperti yang anda lihat, saya mendapat apa yang saya mahukan. Saya hanya menggabungkan komitmen yang saya perlukan.

Jadi, begitulah cara anda memilih ceri di Git. Terima kasih kerana membaca artikel ini.

Cara memasang Apache Subversion di Ubuntu 18.04 LTS
Apache Subversion (dikenali sebagai SVN) adalah sistem kawalan versi sumber terbuka yang sangat popular. Sistem kontrol versi memungkinkan anda mereka...
Cara memasang Apache Tomcat 9 di Ubuntu 18.04 LTS
Apache Tomcat adalah pelayan web dan wadah servlet yang dikembangkan oleh Apache Software Foundation. Ini menerapkan beberapa teknologi Java EE termas...
Cara memasang dan mengkonfigurasi GitLab CE di Ubuntu 18.04 LTS
GitLab adalah pengurus repositori sumber terbuka dan berasaskan web. Ia ditulis dalam Ruby dan dilengkapi dengan banyak ciri termasuk tinjauan kod, pe...