Kawalan versi Git telah menjadi standard dalam kotak alat pemaju moden. Perintah seperti
, commit
dan push
telah lama menjadi memori otot. Walau bagaimanapun, secara relatifnya, beberapa pemaju memahami ciri -ciri "lebih maju" dalam Git dan nilai besar ciri -ciri ini! Artikel ini akan meneroka salah satu alat yang paling berkuasa dalam Git - "Rebase Interaktif". pull
- Interaktif Rebase adalah alat Git yang kuat yang membolehkan pemaju untuk mewujudkan sejarah komit yang berstruktur, menjadikan asas kod projek lebih mudah dibaca dan difahami.
- Rebase interaktif boleh digunakan untuk mengedit maklumat komit lama, memadam komitmen, menggabungkan pelbagai komitmen, menyusun semula, membaiki komitmen lama, dan berpecah/dibuka semula lama untuk mengedit.
- Adalah penting untuk tidak menggunakan rebase interaktif pada komitmen yang telah dikongsi dengan rakan sekerja di repositori terpencil, kerana ia akan menulis semula sejarah. Sebaliknya, anda harus menggunakannya untuk membersihkan komitmen tempatan sebelum menggabungkannya ke cawangan pasukan.
- Mekanisme asas operasi asas interaktif termasuk mengenal pasti bahagian sejarah penyerahan untuk dikendalikan, memulakan sesi dengan arahan , dan kemudian menyatakan tindakan yang diperlukan dalam tetingkap editor terbuka.
-
git rebase -i
Rebase interaktif boleh digunakan untuk mengedit maklumat komit lama, memadam komitmen yang tidak perlu, dan menggabungkan pelbagai komitmen menjadi satu, dengan itu mengoptimumkan dan membersihkan sejarah komit. - mengapa rebase interaktif harus menjadi sebahagian daripada setiap kotak alat pemaju
Kenapa sejarah penyerahan yang berstruktur penting? Bayangkan yang bertentangan: Sejarah penyerahan yang sukar dibaca, anda tidak tahu apa yang sebenarnya dilakukan oleh rakan sekerja anda. Akan ada lebih banyak "sudut gelap" dalam projek seperti ini, dan anda hanya tahu sebahagian kecil penyertaan anda.
Bandingkan dengan sejarah komit yang bersih dan berstruktur: ia membantu menjadikan asas kod projek lebih mudah dibaca dan
dan lebih mudah difahami. Ini adalah bahagian yang diperlukan dari program yang sihat dan berkekalan!
apa yang boleh dilakukan oleh perubahan asas interaktif untuk andaRebase interaktif membantu anda mengoptimumkan dan membersihkan sejarah komit anda. Ia meliputi banyak kes penggunaan yang berbeza, beberapa di antaranya membolehkan anda melakukan perkara berikut:
- Edit Maklumat Penyerahan Lama
- Padam penyerahan
- menggabungkan/menggabungkan pelbagai komitmen
- penyerahan semula
- Betulkan komit lama
- berpecah/membuka semula komit lama untuk mengedit
bila menggunakan rebase interaktif (dan bila tidak!)
Seperti beberapa alat git lain, secara interaktif semula "menulis semula sejarah". Ini bermakna apabila anda menggunakan operasi rebase interaktif untuk mengendalikan satu siri komitmen, bahagian sejarah komit akan ditulis semula oleh : Hash sha-1 komit akan berubah. Mereka adalah objek komit baru, jadi untuk mengatakan. Hakikat bahawa
memerlukan peraturan yang mudah tetapi penting untuk diikuti: Jangan gunakan rebase interaktif (atau alat lain untuk menulis semula sejarah) pada komitmen yang telah anda kongsi dengan rakan sekerja di repositori terpencil. Sebaliknya, gunakannya untuk membersihkan komitmen tempatan anda sendiri -contohnya, di salah satu cawangan ciri anda sendiri -dan kemudian menggabungkannya ke cawangan pasukan.mekanisme asas operasi asas interaktif
Walaupun rebase interaktif boleh digunakan untuk pelbagai perkara, aliran kerja asas mereka sentiasa sama. Sebaik sahaja anda mempunyai pemahaman yang kukuh tentang mekanisme asas ini, Rebase interaktif kehilangan suasana "kompleks dan misteri" dan menjadi alat yang berharga dan mudah digunakan dalam kotak alat anda.
Langkah 1: Di manakah anda harus memulakan sesi?
Soalan pertama yang perlu anda jawab ialah: "Bahagian sejarah komit yang saya mahu beroperasi?" Mari kita berikan contoh praktikal, katakan kita ingin mengedit maklumat komit lama (ini adalah apa yang akan kita lakukan kemudian dalam amalan).Keadaan permulaan kami ditunjukkan dalam gambar di bawah, kami mengedit maklumat penyerahan lama melalui asas perubahan interaktif.
Langkah 2: Mulakan sesi sebenar!
Memulakan sesi sebenar adalah sangat mudah:
Kami menggunakan perintah
dengan bendera
(menunjukkan bahawa kami benar -benar mahu ia menjadi "interaktif") dan memberikan komit asas (yang kami datang dengan langkah pertama di atas). Dalam contoh ini, saya menggunakan<code>$ git rebase -i HEAD~3</code>untuk menentukan komit bahawa "tertinggal di belakang kepala melakukan 3 komitmen". Sebagai alternatif, saya juga boleh menyediakan hash SHA-1 tertentu.
-i
Langkah 3: Beritahu git apa yang anda mahu lakukan git rebase
HEAD~3
Selepas memulakan sesi rebase interaktif, anda akan melihat tetingkap editor di mana git menyenaraikan satu siri komitmen -dari komitmen terbaru sepanjang jalan ke (tetapi tidak termasuk) komit asas yang anda pilih dalam langkah 1 sebagai penyerahan komitom asas .
Dalam langkah ini, dua mata perlu diberi perhatian kepada:
- Penyerahan disenaraikan dalam urutan terbalik! Kami menjangkakan penyerahan terkini yang muncul di bahagian atas akan muncul di bahagian bawah senarai. Jangan risau: repositori git anda utuh! ? Jangan membuat perubahan sebenar dalam tetingkap editor ini! Walaupun anda mungkin tergoda untuk menukar maklumat komit secara langsung dalam tetingkap editor ini (selepas semua, itulah yang kami mahu lakukan ...), anda perlu bersabar. Di sini kita hanya memberitahu Git apa yang kita mahu lakukan - dan bukannya membuat perubahan sebenar. Saya akan menunjukkan ini dalam amalan tidak lama lagi!
- Dengan gambaran teori ini, mari kita menyelam beberapa kes praktikal bersama -sama! Edit Maklumat Penyerahan Lama
Salah satu kes penggunaan yang paling popular untuk rebase interaktif ialah anda boleh mengedit penyerahan lama selepas itu. Anda mungkin tahu bahawa
juga membolehkan anda menukar maklumat yang dikemukakan - tetapi ini hanya terpakai kepada penyerahan terkini. Untuk apa -apa komited lebih tua daripada ini, kita perlu menggunakan Rebase interaktif!
mari kita lihat senario tertentu. Berikut adalah imej maklumat penyerahan ralat yang perlu diperbetulkan. git commit --amend
NOTA: Untuk gambaran yang lebih baik dan visualisasi yang lebih jelas, saya menggunakan klien Desktop Menara Git dalam beberapa tangkapan skrin. Anda tidak memerlukan menara untuk mengikuti tutorial ini.
Untuk contoh kami, katakan kami ingin mengedit mesej untuk penyerahan semasa bertajuk "Optimalkan Struktur Markup dalam Indeks ...".
Langkah pertama kami adalah untuk menentukan komit asas sesi rebase interaktif ini. Oleh kerana kita harus (sekurang -kurangnya) kembali kepada komitmen induk "Apple Bad" kami, kami menggunakan (tiga komitmen di belakang Ketua komitmen, iaitu komitmen bertajuk "Tukar Tajuk ...") sebagai titik permulaan untuk Sesi:
Selepas melaksanakan arahan ini, editor kegemaran anda akan membuka dan memaparkan senarai komitmen yang anda pilih (dengan memberikan komit asas).
HEAD~3
<code>$ git rebase -i HEAD~3</code>untuk menandakan baris yang sama
. Dalam kes kita, kita mahu mengatasi komitmen (yang bermaksud kita mahu mengubah maklumat komit, tetapi menyimpan komit lain).
Malah, semua kata kunci tindakan yang ada ditentukan di bahagian bawah tetingkap ini - jadi tidak perlu ingat apa -apa!
dengan kata kunci tindakan pilihan anda (yang bermaksud "menerima komitmen seperti"), anda hanya menyimpan dan menutup tetingkap. Selepas melakukan ini, tetingkap editor baru akan dibuka dengan maklumat komit semasa. Akhirnya, kita boleh melakukan apa yang kita rancangkan pada mulanya: edit mesej komit lama ini!
lama yang berkomitmen dari sejarah yang anda tidak perlukan (atau tidak mahu). Bayangkan anda secara tidak sengaja memasukkan kata laluan peribadi dalam penyerahan baru -baru ini: Dalam kebanyakan kes, maklumat sensitif tersebut tidak boleh dimasukkan ke dalam asas kod.
Juga ingat bahawa hanya memadam maklumat dan melakukannya sekali lagi tidak menyelesaikan masalah anda: Ini bermakna kata laluan masih disimpan di repositori sebagai komit lama. Apa yang anda mahukan ialah memadam data ini sepenuhnya bersih dari repositori!
Sila ambil perhatian bahawa kali ini saya menggunakan hash SHA-1 tertentu dalam perintah untuk mengendalikan komit itu.
untuk menghilangkan komitmen yang tidak diingini. Atau, dalam kes khas ini, kita hanya boleh memadamkan keseluruhan baris dari editor. Sekiranya baris tidak lagi wujud apabila menjimatkan dan menutup tetingkap (mewakili komit), Git akan memadamkan komit yang sama. Apa sahaja yang anda pilih, selepas menyimpan dan menutup tetingkap editor, penyerahan akan dipadamkan dari sejarah repositori anda!
Satu lagi kes penggunaan untuk rebase interaktif adalah apabila anda ingin menggabungkan pelbagai komitmen berasingan Secara umumnya, membuat komit "lebih besar" (dengan menggabungkan pelbagai komitmen menjadi satu) bukan strategi yang baik dalam kebanyakan kes. Peraturan umum adalah untuk mengekalkan komitmen sekecil mungkin, sebagai "lebih kecil" bermaksud "lebih mudah untuk dibaca dan difahami". Walau bagaimanapun, dalam beberapa kes, ini masih masuk akal. Berikut adalah dua contoh: mari kita lengkapkan contoh praktikal bersama -sama dan gunakan situasi yang ditunjukkan dalam gambar berikut sebagai keadaan permulaan kita. Katakan bahawa semantiknya lebih masuk akal untuk menggabungkan kedua -dua komitmen ini. Menggunakan alat rebase interaktif, kita boleh melakukan ini: Setakat ini, anda sudah terbiasa dengan apa yang sedang berlaku: Tetingkap editor akan dibuka dengan senarai penyerahan. Saya telah menyebut bahawa dalam kes ini kita akan menggunakan kata kunci operasi berfungsi: dalam contoh kami.
Saya harap anda bersetuju bahawa alat rebase interaktif Git sangat berharga! Sebagai pemaju, kita mesti berusaha untuk sejarah komitmen yang bersih dan jelas. Ini adalah faktor utama dalam menjaga asas kod yang sihat dan mudah difahami (untuk rakan sepasukan anda dan diri anda, selepas beberapa ketika telah berlalu). Jika anda ingin mengetahui lebih lanjut, saya sangat mengesyorkan "Git First Aid Kit". Ini adalah koleksi video pendek (percuma) yang menunjukkan cara membersihkan dan membatalkan kesilapan dalam Git. Bersenang -senang! git rebase dan git gabungan adalah dua cara yang berbeza untuk mengintegrasikan perubahan dari satu cawangan ke yang lain. GIT Gabungan adalah cara untuk menggabungkan kod secara langsung dari dua cawangan yang berbeza. Ia mewujudkan komitmen baru dalam sejarah, memelihara urutan kronologi yang dilakukan. Git Rebase, sebaliknya, adalah cara untuk bergerak atau menggabungkan satu siri komitmen menjadi komitmen asas baru. Ia seperti mengatakan "Saya mahu menambah kerja orang lain mengenai perubahan saya". Dalam erti kata lain, ia membolehkan anda meletakkan perubahan pada cawangan semasa di bahagian atas cawangan lain. Jika anda ingin membatalkan rebase git, anda boleh menggunakan arahan Git Interactive Rebase membolehkan anda menukar komitmen dalam pelbagai cara, seperti penyuntingan, pemadaman, dan pemampatan. Anda bukan sahaja boleh mengubah maklumat komit, tetapi juga menukar kod sebenar (jika anda membuat kesilapan). Ini adalah alat yang berkuasa yang memberi anda kawalan sepenuhnya ke atas sejarah penyerahan projek anda. pemampatan adalah perbuatan menggabungkan pelbagai komitmen dalam satu komit. Dalam Git, anda boleh memampatkan komit menggunakan arahan Walaupun Git Interactive Rebase adalah alat yang berkuasa, ia boleh berbahaya jika digunakan secara tidak wajar. Ia menulis semula sejarah komit, yang boleh menyebabkan masalah jika anda berhadapan dengan cawangan awam yang orang lain juga berurusan. Adalah disyorkan untuk menggunakannya di cawangan tempatan yang belum ditolak. Bentrokan mungkin berlaku semasa proses rebase. Git akan berhenti sejenak dan membolehkan anda menyelesaikan konflik ini sebelum meneruskan. Anda boleh membetulkan perubahan yang bercanggah dengan mengedit fail dan kemudian gunakan Ya, anda boleh memecah komitmen yang lebih kecil menggunakan Git Interactive Rebase. Ini sangat berguna jika anda membuat pelbagai perubahan dalam satu komit tetapi kemudian memutuskan bahawa mereka harus berasingan. anda boleh mengedit maklumat penyerahan semasa rebase interaktif. Dalam senarai penyerahan, gantikan Ya, anda boleh menggunakan Git Interactive Rebase untuk menukar susunan komitmen. Dalam senarai komit, anda hanya boleh menukar susunan baris untuk menukar susunan komitmen. Ini sangat berguna jika anda ingin menjadikan sejarah komit anda lebih logik atau lebih jelas.
Rebase interaktif juga membolehkan anda memadam
<code>$ git rebase -i HEAD~3</code>
Selepas melaksanakan arahan ini, kami akan melihat senarai komit lagi. git rebase -i
HEAD~2
drop
ke dalam satu. Sebelum kita menyelam bagaimana untuk bekerja, mari kita menghabiskan beberapa minit membincangkan kapan atau mengapa ia boleh menjadi berharga.
squash
<code>$ git rebase -i HEAD~3</code>
Garis yang anda tandakan dengan kata kunci akan bergabung dengan garis -garis di atas!
squash
squash
Selepas menyimpan dan menutup tetingkap ini, tetingkap baru akan dibuka. Ini kerana, dengan menggabungkan pelbagai komitmen, kita tentu akan membuat komit baru. Dan penyerahan ini juga memerlukan maklumat penyerahan, sama seperti penyerahan lain!
squash
Gunakan fungsi kuat perubahan asas interaktif
Git Perubahan Interaktif Base FAQ (FAQ)
Apakah perbezaan antara git rebase dan git gabungan?
bagaimana untuk membatalkan git rebase?
git reflog
untuk mencari komit yang anda ingin kembali, dan kemudian gunakan arahan git reset --hard HEAD@{number}
. Perintah git reflog
memaparkan senarai setiap perubahan yang dibuat ke kepala, dan arahan git reset
membolehkan anda menetapkan kepala semasa ke keadaan yang ditentukan. Apakah tujuan Git Interactive Rebase?
Bagaimana menggunakan penyerahan mampatan pembolehubah asas interaktif Git?
git rebase -i
diikuti oleh hash komit untuk memampatkan. Dalam editor teks terbuka, anda boleh menandakan komit yang anda ingin memampatkan dengan menggantikan pick
dengan squash
atau s
. Apakah risiko menggunakan Git Interactive Rebase?
Bagaimana menyelesaikan konflik semasa asas perubahan git?
git add
untuk menambah fail yang diselesaikan untuk menyelesaikan konflik. Selepas semua konflik diselesaikan, anda boleh terus mengubah asas menggunakan git rebase --continue
. Bolehkah saya menggunakan asas perubahan interaktif git untuk memisahkan komit?
Bagaimana untuk mengedit maklumat penyerahan menggunakan asas perubahan interaktif Git?
pick
dengan reword
atau r
untuk menandakan penyerahan untuk diedit. Apabila meneruskan, GIT akan membuka editor teks untuk setiap penyerahan yang ditandakan reword
, membolehkan anda menukar maklumat penyerahan. Apakah perbezaan antara git rebase dan tarik git?
Git pull
adalah arahan yang mengambil perubahan dari repositori jauh dan menggabungkannya ke cawangan semasa. Sebaliknya, Git rebase
adalah arahan yang bergerak atau menggabungkan satu siri komitmen menjadi komitmen asas baru. Walaupun kedua -dua arahan digunakan untuk perubahan integrasi, ia dilakukan secara berbeza. Bolehkah saya menggunakan rebase interaktif git untuk menukar perintah komitmen?
Atas ialah kandungan terperinci Panduan untuk Git Interactive Rebase, dengan contoh praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Tinggal maklumat mengenai trend teknologi terkini dengan surat berita pemaju teratas ini! Senarai ini menawarkan sesuatu untuk semua orang, dari peminat AI ke pemaju backend dan frontend yang berpengalaman. Pilih kegemaran anda dan menjimatkan masa mencari rel

Tutorial ini membimbing anda melalui membina saluran paip pemprosesan imej tanpa pelayan menggunakan perkhidmatan AWS. Kami akan membuat frontend next.js yang digunakan pada kluster ECS Fargate, berinteraksi dengan Gateway API, Fungsi Lambda, Bucket S3, dan DynamoDB. Th

Program perintis ini, kerjasama antara CNCF (Yayasan Pengkomputeran Native Cloud), pengkomputeran ampere, equinix metal, dan digerakkan, menyelaraskan ARM64 CI/CD untuk projek GitHub CNCF. Inisiatif ini menangani kebimbangan keselamatan dan prestasi lim


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
