git add b.txt
rm b.txt
git commit -m '删除b.txt文件'
Saya melaksanakan baris ketiga commit
dan kemudian gesaan
On branch master
Changes not staged for commit:
deleted: b.txt
no changes added to commit
Kemudian jika saya git checkout -- b.txt
adakah saya masih boleh memulihkannya ke kawasan pementasan? Mengapa ia tidak dipadamkan sepenuhnya?
Seorang pemula. . . Tulis beberapa tutorial. . . . .
Pada dasarnya, git mempunyai tiga lokasi berbeza untuk menyimpan fail secara setempat.
Pokok berfungsi: Ini mewakili semua fail dan folder yang anda boleh lihat
indeks: Ini sebenarnya disimpan dalam folder
.git
seperti repositori berikut (format simpanan tidak akan dibincangkan di sini)Repositori: Menyimpan semua versi yang diserahkan.
Selepas semuanya dilakukan, komitmen terkini dalam WorkingTree, kawasan indeks dan repositori adalah sama.
git add
bermaksud menggantikan/kemas kini fail dalam kawasan indeks dengan fail dalam WorkingTree. Oleh itu, selepasgit add b.txt
, fail b.txt dalam indeks dikemas kini denganb.txt
yang sedang disimpan.rm b.txt
hanyalah arahan linux, yang bermaksud untuk memadam fail. Untuk git, ini hanya memadamkanb.txt
dalam WorkingTree.git commit
bermaksud membungkus fail dalam indeks dan meletakkannya ke dalam repositori. Memandangkanb.txt
masih dalam kawasan indeks pada masa ini,git commit
masih akan mengemas kinib.txt
ke repositori.Ini menunjukkan perbezaan antara WorkingTree semasa dan kawasan indeks:
Fail
b.txt
telah dipadamkan daripada WorkingTree semasa, tetapi fail itu masih wujud dalam indeks.Gesaan ini harus dikatakan sebagai amaran, kerana
git commit
bermaksud untuk membungkus kandungan kawasan indeks ke dalam repositori Walau bagaimanapun, kerana ia telah dilakukan sebelum ini dan tiada perkara baru telah ditambah, kandungannya kawasan indeks adalah sama dengan yang terkini Komit adalah sama, git tidak perlu menyimpannya lagi, jadi ia memaparkan "Tiada apa-apa untuk dilakukan"git rm
Maksud arahan ini adalah untuk memadam fail tertentu dari kawasan indeks dan WorkingTree, jadi selepasgit rm b.txt
tiadab.txt
dalam indeks. Itu sahajagit checkout <branch>
bermaksud mengemas kini kandungan dalam WorkingTree dan kawasan indeks dengan komitmen terkini dalam cawangan. Oleh kerana ia tidak boleh diterbalikkan, arahan ini akan memberikan gesaan jika kandungan di kedua-dua tempat ini belum diserahkan ke repositori.git checkout -- filename
bermaksud menggantikan fail dalam WorkingTree dengan kandungan kawasan indeks--
adalah pilihan, menunjukkan bahawa semua selepas parameter ini adalah nama fail. (Kerana kadangkala cawangan/Tag mungkin mempunyai nama yang sama dengan fail)Arahan tambahan disertakan. . .
git status
Ini bermakna untuk menunjukkan perbezaan antara WorkingTree dan kawasan indeks (lalai ialah merah), dan perbezaan antara indeks dan versi terkini yang diserahkan (lalai ialah hijau? Hijau gelap?). Di samping itu, akan ada petua tentang cara mengemas kini antara satu sama lain di antara mereka.cuba
git rm filename
Penyoal terlebih dahulu perlu mengetahui mengapa git memerlukan operasi tambah Kerana git hanya mempunyai baris arahan pada permulaan, operasi tambah adalah bersamaan dengan operasi pemilihan fail di bawah GUI, jadi operasi tambah dan komit harus dipertimbangkan. secara keseluruhan (iaitu, Seperti memilih fail di bawah GUI dan menyerahkannya), ia tidak boleh dipisahkan.
1.git add b.txt //Tambah b.txt dari ruang kerja ke kawasan pementasan (peringkat)
2.rm b.txt //Padam b.txt dalam ruang kerja, tetapi tidak dilaksanakan git rm b.txt memadam fail daripada repositori
3. git commit -m 'Delete b.txt file' // Memandangkan git rm b.txt tidak dilaksanakan, commit hanya menyerahkan kandungan dalam 1
--> ;Anda harus melaksanakan git rm b.txt antara 2 dan 3 untuk memadam fail
Saya ingin mengingatkan anda bahawa mengubah suai nama fail dan memadam fail dalam git adalah hampir sama seperti yang dinyatakan di atas, anda perlu menggunakan arahan git rm dan git mv untuk beroperasi secara berasingan untuk git. Anda boleh Lihat baik-baik
. Padam fail:
Padam fail dalam ruang kerja, nama fail rm
Terdapat dua situasi:
Situasi pertama: Fail perlu dipadamkan dalam repositori juga.
git rm nama fail
git commit -m 'Description'
Kes kedua: secara tidak sengaja memadam fail
git checkout -- nama fail
Menambah kurang satu git rm di hadapan