5 cara untuk membatalkan kesilapan dengan git
membatalkan ralat!
Jika anda menggunakan Git sebagai sistem kawalan versi anda, anda sudah mempunyai set "alat undo" yang kuat. Artikel ini akan menunjukkan kepada anda lima cara yang kuat untuk membatalkan kesilapan dengan Git!mata utama
- Git membolehkan pengguna membatalkan kesilapan dalam kod dengan membuang perubahan tempatan yang tidak diingini. Ini boleh dilakukan dengan menggunakan arahan
- , yang menetapkan semula fail ke keadaan yang terakhir. Untuk lebih banyak kawalan berbutir, anda boleh menggunakan bendera
git restore
untuk membuang perubahan pada tahap patch.-p
Perintah - boleh digunakan untuk memulihkan fail tertentu ke versi tertentu. Pengguna boleh mengenal pasti "ralat komit" fail yang korup dan kemudian gunakan arahan
git log
untuk memulihkan fail ke versi sebelum komit yang salah.git checkout
Alat - Pergerakan rekod semua petunjuk kepala di repositori tempatan, yang membolehkan pengguna kembali ke keadaan sebelumnya dan memulihkan data yang hilang.
Reflog
Reflog
Pengguna boleh menggunakan arahan untuk memindahkan komit ke cawangan yang berbeza. Sekiranya komit itu untuk cawangan yang salah, pengguna boleh menyemak cawangan yang betul, gerakkan komit lalu, dan kemudian gunakan - untuk memadamkan komit yang tidak diingini dari cawangan asal.
git cherry-pick
git reset
membuang beberapa perubahan tempatan
Proses pengekodan biasanya mengelirukan. Kadang -kadang ia terasa seperti dua langkah ke hadapan dan satu langkah mundur. Dengan kata lain: beberapa kod yang anda tulis adalah hebat ... tetapi ada yang tidak. Di sinilah GIT dapat membantu anda: ia membolehkan anda menyimpan bahagian yang baik dan membuang perubahan yang anda tidak perlu lagi.
mari kita lihat senario sampel yang mengandungi beberapa perubahan "tempatan" (iaitu perubahan yang belum diserahkan).
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 mempelajari tutorial ini.
mari kita selesaikan masalah dalam pertama. Perubahan yang kami buat sepenuhnya ke arah yang salah. Mari kita membatalkan semua perubahan dan mencipta status komit terakhir fail:
general.css
Sila ambil perhatian bahawa, atau, saya boleh menggunakan arahan
$ git restore css/general.css
yang sedikit dikemas kini (ia hanya memberi tumpuan kepada jenis tugas ini). git checkout
git checkout
Soalan kedua kami dalam git restore
agak rumit. Beberapa perubahan yang kami buat dalam fail ini sebenarnya baik, dan hanya sebahagiannya perlu didokumentasikan.
akan menyelesaikan masalah - tetapi kali ini anda perlu menggunakan bendera git restore
, kerana kita akan masuk ke dalam tahap "patch": -p
$ git restore css/general.css
dalam fail itu - jika anda mahu membuangnya.
anda akan melihat bahawa saya menaip "n" untuk perubahan blok pertama (untuk menyimpannya) dan "y" untuk perubahan blok kedua (untuk membuangnya). Sebaik sahaja proses selesai, anda akan melihat bahawa hanya sekeping pertama perubahan berharga kekal -seperti yang kita mahu!
Kadang -kadang, anda mungkin mahu memulihkan fail
spesifik
ke versi spesifik . Sebagai contoh, anda tahu bekerja dengan baik pada satu ketika pada masa lalu, tetapi tidak sekarang. Pada ketika ini anda ingin kembali masa, tetapi hanya untuk fail khusus ini, bukan keseluruhan projek!
kita perlu mengetahui versi tepat yang kita mahu pulihkan. Menggunakan set parameter yang betul, anda boleh memaparkan index.html
paparan sejarah fail individu anda:
git log
$ git restore -p index.html
yang berubah -ubah, yang sangat berguna untuk mencari versi "Apple Bad" yang menyebabkan masalah muncul.
ini, anda boleh menggunakan bendera index.html
untuk memaparkan perubahan sebenar dalam komitmen ini:
Sebaik sahaja kita mendapati komitmen yang salah yang menyebabkan fail kecil kita comel kita rosak, kita boleh meneruskan untuk memperbaiki ralat. Kami akan melakukan ini dengan memulihkan versi fail sebelum -p
komit! Ini penting: bukannya meneruskan fail dalam komitmen yang salah, kami memulihkan keadaan yang terakhir-yang satu sebelum komit!
$ git log -- index.html
Menghadiri kepada nilai hash komit yang salah akan mengarahkan Git untuk melakukan perkara berikut: Pergi ke versi komit yang dirujuk sebelum
.$ git log -p -- index.html
Selepas melaksanakan perintah ini, anda akan mendapati bahawa ~1
telah diubahsuai dalam salinan kerja tempatan anda: Git memulihkan versi terakhir yang baik untuk kami!
pulih versi yang hilang menggunakan reflog
Satu lagi alat undo yang kuat dalam kit pertolongan cemas git adalah "reflog". Anda boleh memikirkannya sebagai log di mana Git merekodkan semua pergerakan penunjuk kepala yang berlaku di repositori tempatan-seperti komitmen, checkout, gabungan dan rebase, ceri-memilih, dan menetapkan semula. Semua operasi yang lebih penting akan direkodkan dengan baik di sini! index.html
Sudah tentu, log semacam itu sesuai untuk situasi di mana perkara tidak berjalan lancar. Oleh itu mari kita buat bencana kecil terlebih dahulu - maka kita boleh memperbaikinya dengan reflog.
Katakan anda yakin bahawa beberapa komitmen terakhir anda tidak baik: anda ingin menyingkirkannya, jadi anda menggunakan git reset
untuk kembali ke versi sebelumnya. Akibatnya, "kesilapan" komitmen hilang dari sejarah komit anda - seperti yang anda mahukan.
Ini adalah kes klasik alat reflog Git! Mari lihat bagaimana ia menyelamatkan anda:
$ git restore css/general.css
mari kita memecahkannya satu demi satu:
Pertama sekali, Reflog sangat mudah dibuka: A Simple
sudah cukup.- Kedua, anda akan melihat bahawa status yang direkodkan disusun mengikut susunan kronologi, dengan status terkini di bahagian atas.
git reflog
Jika anda melihat dengan teliti, anda akan mendapati bahawa projek atas (iaitu, terbaru) adalah operasi "Reset". Inilah yang kami lakukan 20 saat yang lalu. Jelas sekali, log ini sah?
- Jika kita mahu membatalkan "Reset" yang tidak disengajakan sekarang, kita hanya boleh kembali ke negeri kita yang terdahulu - ini juga didokumentasikan dengan baik di sini! Kita hanya boleh menyalin hash komit atas keadaan sebelumnya ke papan klip dan mulakan daripadanya.
- Untuk memulihkan keadaan sebelumnya ini, kita boleh menggunakan
- sekali lagi, atau hanya membuat cawangan baru:
git reset
$ git restore -p index.html
Pulihkan cawangan yang dipadam
Reflog juga boleh berguna dalam situasi lain. Sebagai contoh, apabila anda secara tidak sengaja memadamkan cawangan yang anda tidak sepatutnya memadamkan. Mari kita lihat senario contoh kami: git reset
Mari kita anggap pelanggan/ketua pasukan/pengurus projek kami memberitahu kami bahawa analisis yang indah yang kami sedang membangun tidak lagi diperlukan. Kami teratur dengan baik dan sudah tentu kami akan memadamkan cawangan
yang sepadan!Di atas, anda dapat melihat bahawa dalam senario contoh kami, kami sedang menyemak cawangan:
$ git log -- index.html
$ git restore css/general.css
git memberitahu kita kita akan melakukan sesuatu yang sangat serius: Sejak feature/analytics
mengandungi komitmen unik yang tidak wujud di tempat lain, memadamkannya akan memusnahkan beberapa data (mungkin berharga). Ok ... kerana ciri ini tidak lagi diperlukan, kita boleh meneruskan:
$ git restore -p index.html
Anda mungkin menjangkakan apa yang akan berlaku seterusnya: Pemimpin klien/pasukan kami/pengurus projek dengan senang hati memberitahu kami bahawa ciri ini kembali! Mereka mahu terus menerus! ?
Begitu juga, kita menghadapi situasi yang buruk di mana kita mungkin kehilangan data berharga! Oleh itu, mari kita lihat jika reflog dapat menyelamatkan kita lagi:
$ git log -- index.html
untuk beralih ke cawangan lain (kerana git tidak membenarkan anda memadam cawangan semasa). Sudah tentu, checkout ini juga direkodkan dalam reflog. Untuk memulihkan cawangan yang telah kita hapus, kita kini boleh menggunakan keadaan git checkout
sebelum sebagai titik permulaan untuk cawangan baru:
$ git log -p -- index.html
Jika anda menggunakan GUI desktop seperti menara, membatalkan kesilapan tersebut biasanya semudah menekan
cmd z .
bergerak komited ke cawangan yang berbeza
Akhirnya, mari kita lihat kes klasik "Oh, tidak!"
Hari ini, banyak pasukan telah merumuskan peraturan yang melarang penyerahan langsung kepada cawangan jangka panjang seperti "utama", "tuan" atau "membangunkan". Biasanya, komitmen baru hanya boleh mencapai cawangan ini dengan menggabungkan/rebase. Walau bagaimanapun, kita kadang -kadang lupa dan mengemukakan terus ...
mari kita ambil senario berikut sebagai contoh.
kita sepatutnya menyerahkan tetapi secara tidak sengaja mencetuskan komit pada cawangan
feature/newsletter
Pertama sekali, kita perlu memastikan kali ini kita berada di cawangan yang betul, jadi kita sedang menyemak master
:
feature/newsletter
Sekarang kita boleh memindahkan komit dengan selamat dengan menggunakan perintah
$ git checkout <bad-commit-hash>~1 -- index.html
cherry-pick
kita boleh menyemak
$ git reflog
feature/newsletter
Setakat ini, semuanya berjalan lancar. Tetapi cherry-pick
tidak memadamkan komit dari cawangan master
(ia selama -lamanya tidak boleh berada di sana). Oleh itu, kita perlu membersihkan kekacauan kita di sana juga:
$ git restore css/general.css
Kami beralih kembali ke master
dan gunakan git reset
untuk memadam (di sini) yang tidak diingini dari sejarah.
akhir, semuanya kembali ke normal-jadi anda boleh memulakan tarian gembira anda sekarang! ???
Ralat buka kunci adalah kuasa besar
Saya katakan sebelum ini, dan malangnya kita semua tahu itu benar: kita tidak dapat mengelakkan kesilapan! Tidak kira betapa baiknya kita pengaturcara, kita akan merosakkannya setiap sekarang dan kemudian. Jadi persoalannya bukan sama ada kita membuat kesilapan, tetapi bagaimana kita mengendalikannya dengan berkesan dan menyelesaikan masalah? Jika anda ingin mengetahui lebih lanjut mengenai alat Git Undo, saya sangat mengesyorkan "Git First Aid Kit". Ini adalah koleksi video pendek (percuma) yang menunjukkan cara membersihkan dan membatalkan kesilapan dalam Git.
Saya ingin anda perkembangan yang lancar, keberanian untuk mencuba, dan sudah tentu anda mesti baik untuk membaiki!Soalan Lazim Mengenai Menggunakan Git Untuk Membatalkan Kesalahan (FAQ)
Apakah perbezaan antara
dan
?
git reset
git revert
dan
adalah dua perintah yang membantu anda membatalkan perubahan dalam repositori git anda, tetapi mereka bekerja dengan cara yang berbeza. Gerakkan penunjuk kepala anda ke komit tertentu. Ini bermakna ia sebenarnya "lupa" semua yang anda miliki selepas menetapkan semula kepada komitmen. Ini adalah operasi yang merosakkan dan harus digunakan dengan berhati -hati. Sebaliknya, git reset
mencipta komit baru untuk membatalkan perubahan yang dibuat dalam komit tertentu. Ini adalah operasi yang selamat kerana ia tidak mengubah sejarah yang sedia ada. git revert
git reset
Bagaimana untuk membatalkan operasi git revert
?
Jika anda telah menggunakan git add
untuk menyimpan perubahan dan ingin membatalkan ini, anda boleh menggunakan perintah
. Sebagai contoh, jika anda ingin membuat fail tertentu, anda boleh menggunakan arahan . Sekiranya anda ingin membatalkan semua perubahan, anda boleh menggunakan git add
tanpa menentukan fail tersebut. git reset
git reset <file></file>
Bolehkah saya membatalkan git reset
?
Ya, anda boleh membatalkan menggunakan git commit
atau
perintah. Gerakkan penunjuk kepala anda kembali ke komit yang anda mahu membatalkan, berkesan menghapus komitmen yang tidak diingini. Sebaliknya, git reset
akan mewujudkan komit baru untuk membatalkan perubahan yang dibuat dalam komit yang tidak diingini. git revert
git commit
Bagaimana untuk membatalkan perubahan dalam fail tertentu? git reset
git revert
Jika anda telah membuat perubahan pada fail tertentu dan ingin membatalkan perubahan ini, anda boleh menggunakan perintah
akan membuang perubahan dalam direktori kerja tempatan fail yang ditentukan.
git stash
Apa itu?
git stash
adalah arahan yang membolehkan anda menyimpan perubahan sementara yang anda tidak mahu menyerahkan segera. Ini berguna jika anda perlu beralih ke cawangan yang berbeza tetapi tidak mahu melakukan perubahan semasa. Anda boleh menggunakan perubahan sementara kemudian menggunakan git stash apply
.
Bagaimana untuk melihat sejarah git saya?
anda boleh menggunakan arahan git log
untuk melihat sejarah git anda. Ini akan menunjukkan kepada anda senarai semua komitmen dalam repositori, serta mesej komitmen mereka.
Bolehkah saya membatalkan git push
?
Ya, anda boleh membatalkan git push
, tetapi ini sedikit lebih rumit daripada membatalkan perubahan tempatan. Anda perlu menggunakan perintah -f
dengan pilihan --force
atau git push
untuk menimpa repositori jauh dengan repositori tempatan anda. Berhati -hati dengan perintah ini, kerana ia boleh menyebabkan masalah bagi orang lain yang berurusan dengan repositori yang sama.
bagaimana untuk membatalkan pelbagai komitmen?
Jika anda ingin membatalkan pelbagai komitmen, anda boleh menggunakan perintah git reset
dan sintaks HEAD~<number></number>
. Sebagai contoh, git reset HEAD~3
menggerakkan penunjuk kepala anda sebelum tiga melakukan.
Apakah perbezaan antara tetapan semula lembut dan tetapan semula keras?
Reset lembut menggerakkan penunjuk kepala anda ke komit tertentu, tetapi tidak mengubah direktori kerja dan kawasan pementasan anda. Ini bermakna anda masih akan melihat perubahan daripada "terlupa" yang dilakukan sebagai perubahan yang tidak komited. Sebaliknya, tetapan semula keras akan membuang semua perubahan dalam direktori kerja dan kawasan pementasan, dengan berkesan memulihkan repositori anda ke negeri pada masa komit yang ditentukan.
Bolehkah saya meneruskan komit selepas menetapkan semula keras?
Ya, komited boleh disambung semula selepas penetapan semula keras, tetapi tidak mudah. Git menyimpan log untuk semua kemas kini ref (seperti pointer kepala bergerak) dalam reflog. Anda boleh menggunakan perintah git reflog
untuk mencari komited yang anda ingin pulih, dan kemudian gunakan git branch
untuk membuat cawangan baru pada komit itu.
Atas ialah kandungan terperinci 5 cara untuk membatalkan kesilapan dengan git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











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

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

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
