Peta dunia

 

EN: Read in English

Dunia 2: Sihir Undur

Reflog, jaring keselamatan anda

Anda akan belajar: cara cari dan bawa balik commit yang "hilang".

Teks BM belum disemak oleh penutur asli.

Masalahnya

main dan HEAD lompat balik satu commit. Add day 3 entry jadi titik putus-putus yang hilang.
6d3a9b1a8feb63270a76ebcf4670031ae57

Alamak. Anda taip git reset --hard HEAD~1. Catatan day 3 anda lesap. Panik?

Tengok

git reflog senaraikan setiap pergerakan HEAD, yang terbaru dulu. Baris kedua sebut: commit: Add day 3 entry. Output terminal: $ git reflog bcf4670 (HEAD -> main) HEAD@{0}: reset: moving to HEAD~1 031ae57 HEAD@{1}: commit: Add day 3 entry bcf4670 (HEAD -> main) HEAD@{2}: commit: Add day 2 entry 270a76e HEAD@{3}: commit: Add style a8feb63 HEAD@{4}: commit: Add day 1 page 6d3a9b1 HEAD@{5}: commit (initial): Add README

Jangan panik. Git simpan diari setiap tempat HEAD pernah pergi. Ini dipanggil reflog: Diari Git tentang semua tempat HEAD pernah pergi. (diari HEAD). Commit (titik simpan) yang hilang masih tersenarai.

Cuba

Cari commit anda yang hilang dalam reflog.

Tekan baris yang ada Add day 3 entry.

~/diary $ git reflog

0 daripada 1 dijumpai

Tengok

Dua baris reflog terbaru: HEAD@{0} ialah reset itu, HEAD@{1} ialah commit Add day 3 entry. Output terminal: $ git reflog -n 2 bcf4670 (HEAD -> main) HEAD@{0}: reset: moving to HEAD~1 031ae57 HEAD@{1}: commit: Add day 3 entry

HEAD@{1} maksudnya “tempat HEAD berada satu langkah lalu”. Anda boleh guna nama itu dalam arahan.

Cuba

Bawa balik commit day 3 itu.

6d3a9b1a8feb63270a76ebcf4670031ae57

Teka

Apa yang reflog boleh bawa balik?

Pilih satu jawapan.

Anda berjaya!

Kini anda boleh bawa balik commit yang “hilang” dengan reflog.

Nak tahu lebih (pilihan)

Reflog hanya ada dalam komputer anda. Ia tak pernah di-push. Baris lama akan luput, secara lalai selepas 90 hari. Baris untuk commit yang hilang luput selepas 30 hari. Anda juga boleh reset ke hash dari senarai reflog.

Selepas git reset --hard HEAD@{1}, git log tunjuk Add day 3 entry di atas semula. Output terminal: $ git reset --hard HEAD@{1} HEAD is now at 031ae57 Add day 3 entry $ git log --oneline 031ae57 (HEAD -> main) Add day 3 entry bcf4670 Add day 2 entry 270a76e Add style a8feb63 Add day 1 page 6d3a9b1 Add README