Saya telah menghapus semua konten di dalam folder dan folder tersebut kosong. Saya masih memiliki salinan di repo jarak jauh saya. Tetapi ketika saya melakukan git pull
itu tidak mengembalikan file yang dihapus bukankah seharusnya melakukan itu?
Jadi saya melakukan penelitian dan melihat bahwa Anda dapat mengembalikan file dengan melakukan
git checkout <revision> -- <name of file>
Tapi itu hanya berfungsi pada file.
Bagaimana cara mengambil semua file di dalam direktori?
git
git-checkout
json2021
sumber
sumber
git status
akan memberi Anda petunjuk tentang perintah apa yang harus dijalankanJawaban:
Semua yang dapat Anda lakukan dengan file, Anda juga dapat melakukannya dengan folder.
Perhatikan juga Temukan dan pulihkan file yang dihapus dalam repositori Git
File dihapus dari pohon kerja tetapi belum dikomit:
Jika Anda belum mengindeks (
git add
) perubahan Anda, Anda dapat mengembalikan konten direktori:Jika penghapusan sudah diindeks, Anda harus mengatur ulang terlebih dahulu:
Pulihkan pohon kerja penuh (bukan satu folder), tetapi hilangkan semua perubahan yang belum dilakukan
Ketika file dihapus di beberapa komit di masa lalu:
Temukan komit terakhir yang memengaruhi jalur yang diberikan. Karena file tidak ada dalam komit HEAD, komit ini pasti telah menghapusnya.
Kemudian periksa versi di komit sebelumnya, menggunakan
^
simbol caret ( ):Pulihkan pohon kerja penuh dari komit jauh
sumber
git checkout -- path/to/folder/*
tidak berfungsi Catatan: pertanyaannya adalah bagaimana mengembalikan folder, bukan fileHow can I retrieve all the files inside the directory
berarti direktori dan file-nya. Tapi perintah itu secara mengejutkan tidak berhasil untukku juga. Saya ingat itu terjadi setahun yang lalu.git checkout -- path
ataugit checkout -- 'path/*'
. Dalam contoh Anda, Anda menghapusgit rm
yang tampaknya tidak dilakukan OP. Saya telah menambahkan instruksi untuk kasus seperti itu. Terima kasih!git checkout "<deleting_commit>^" -- <file_path>
Jika Anda belum melakukan perubahan, Anda dapat mengembalikan konten atau direktori:
Jika Anda ingin mengembalikan semua perubahan lakukan:
sumber
git checkout -- removed_directory
tidak bekerjagit checkout -- removed_directory
bekerja untuk saya, tetapi saya telah membuat direktori ini sebelumnya (olehcheckout
salah satu file di direktori itu). Setelah pembuatan semua file dikembalikan ke folder dengan perintah ini.Anda dapat memulihkan file atau folder dengan git restore.
Di sini, master ~ 1 mengembalikan folder Anda ke revisi "1" dari cabang master Anda.
Sumber: https://git-scm.com/docs/git-restore
sumber
Satu-satunya hal yang berhasil bagi saya adalah melakukan checkout repo di folder lain. Asumsikan repo saat ini masuk
/home/me/current
.Saya kemudian melakukannya
Ini membuat klon terpisah dari repo
/home/me/temp
Sekarang saya dapat pergi
/home/me/temp
dan melakukan apa pun yang saya inginkan. Sebagai contohSekarang saya dapat menyalin kembali folder file yang dihapus
Dan hapus folder temp
Contoh dari
TIDAK BEKERJA
Contoh lain seperti
merusak lebih dari sekadar file yang dihapus. Perubahan lainnya juga akan hilang.
Demikian pula
akan kehilangan komitmen apa pun setelahnya
some-commit
sumber
Mulai git 2.24.0, ada perintah git baru eksperimental: git restore
sumber
Jika Anda tidak menentukan file tertentu, Anda harus dapat menarik konten lengkap dari komit tertentu. Seperti:
git checkout 264794319e9695ba843cd6
(dengan asumsi bahwa hash memiliki semua file Anda di status yang benar).Alasan
pull
tidak memulihkan file adalah karena git melihat penghapusan Anda sebagai perubahan terbaru, menerapkannya di atas apa pun yang Anda tarik.(Saya akan merekomendasikan bereksperimen di cabang baru.)
sumber
Jika Anda hanya ingin memulihkan folder yang dihapus dan Anda memiliki komit lain setelah penghapusan, Anda juga dapat langsung mengunjungi proyek Anda di github.com.
Dari github.com, arahkan Anda ke komit terakhir yang memiliki folder Anda. Anda harus melihat pesan komit dan di sebelah kanan ada tombol berlabel "Jelajahi File". Mengklik ini akan membawa Anda ke semua file dari tahap komit tersebut.
Dari sana Anda dapat mengkloning kode atau hanya mendownload kode tersebut sebagai zip.
sumber
untuk penghapusan tanpa komitmen, Ini sesederhana ini:
git reset HEAD rel / path / ke / dihapus / direktori / *
sumber