Saya melihat jawaban untuk sebuah pertanyaan sini yang membantu memulihkan file yang terhapus di git.
Solusinya adalah
git checkout <deleting_commit>^ -- <deleted_file_path>
Apa yang dilakukan karakter tanda sisipan ( ^
)? Saya pernah melihatnya di tempat lain melakukan hal-hal yang sangat berguna di git. Ini ajaib. Seseorang tolong merusaknya untuk saya dan beri tahu saya apa fungsinya?
^
) adalah karakter pelarian di cmd.exe. Setiap kali saya mencoba menggunakannya untuk melihat apakah itu akan membantu saya sebenarnya tidak memberikan apa-apa, yang menjelaskan mengapa hasilnya tidak pernah berbeda. > _> Cmd.exe bodoh. Anda dapat menghindarinya dengan menggandakan atau mengutipnya:git log master^^
ataugit log "master^"
Jawaban:
HEAD^
Berarti induk pertama dari ujung cabang saat ini.Ingatlah bahwa git commit dapat memiliki lebih dari satu orang tua.
HEAD^
adalah kependekan dariHEAD^1
, dan Anda juga dapat mengalamatkanHEAD^2
dan sebagainya yang sesuai.Anda dapat menemui orang tua dengan komitmen apa pun, tidak hanya
HEAD
. Anda juga dapat bergerak mundur dari generasi ke generasi: misalnya,master~2
berarti kakek dari ujung cabang utama, memilih orang tua pertama dalam kasus ambiguitas. Specifier ini dapat dirantai sewenang-wenang, misalnya ,topic~3^2
. Lihat jawaban terkait untuk Apa perbedaan antaraHEAD^
danHEAD~
di Git?Untuk detail selengkapnya, lihat bagian "Menentukan Revisi" dari
git rev-parse --help
.sumber
HEAD^^^
mengembalikan komit ketiga yang lebih lama yaitu setara denganHEAD~~~
?Artinya "orang tua". Jadi
HEAD^
artinya "induk dari HEAD saat ini". Anda bahkan dapat merantai mereka bersama-sama:HEAD^^
berarti "orang tua dari orang tua dari HEAD saat ini" (yaitu, kakek dari HEAD saat ini),HEAD^^^
berarti "orang tua dari orang tua dari orang tua dari HEAD saat ini", dan seterusnya.sumber
^
( Tanda sisipan) juga dapat digunakan saat menentukan rentang .sumber
Berikut penjelasan visualnya. Misalkan Anda memiliki riwayat seperti ini:
Ketika fitur digabungkan menjadi master,
C
dibuat dengan dua leluhur. Git memberikan nomor leluhur ini. Leluhur garis utamaB
ditetapkan 1 dan leluhur fiturF
ditetapkan 2.Jadi
C^1
mengacuB
danC^2
mengacu padaF
.C^
adalah alias untukC^1
.Anda hanya akan menggunakan
<rev>^3
. jika Anda telah melakukan penggabungan tiga cabang.sumber
Tanda sisipan mengacu pada induk dari komit tertentu. Misalnya
HEAD^
merujuk ke induk dari HEAD commmit saat ini. (juga,HEAD^^
mengacu pada kakek-nenek).sumber
Karat mewakili offset komit (induk). Jadi misalnya,
HEAD^
berarti "satu komit dari HEAD" danHEAD^^^
berarti "tiga komit dari HEAD".sumber
(^) Mendapatkan sumber induk dari perintah yaitu HEAD ^ akan mendapatkan induk dari HEAD.
sumber
Greg Bacon memberikan tautan yang bagus, tapi cukup padat. Dokumen pengantar Git online juga memperkenalkan penentu revisi dan rentang:
https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection
sumber