Saya menghapus beberapa file.
Saya belum berkomitmen.
Saya ingin mengatur ulang ruang kerja saya untuk memulihkan file.
Saya melakukan git checkout .
.
Namun file yang dihapus masih hilang.
Dan git status
menunjukkan:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: cc.properties
# deleted: store/README
# deleted: store/cc.properties
#
Mengapa tidak git checkout .
mereset ruang kerja ke HEAD
?
git checkout .
akan berfungsi dengan baik.Jawaban:
Keluaran memberi tahu Anda apa yang perlu Anda lakukan.
git reset HEAD cc.properties
dll.Ini akan menghentikan operasi rm. Setelah itu, menjalankan
git status
lagi akan memberi tahu Anda bahwa Anda perlu melakukangit checkout -- cc.properties
untuk mendapatkan file kembali.Pembaruan: Saya punya ini di file konfigurasi saya
yang biasanya saya gunakan untuk unstage stuff.
sumber
git reset HEAD \*
dan kemudiangit checkout -- .
rm -r ./engines
- oops. Sekaranggit reset engines; git checkout engines
.Anda telah melakukan penghapusan sehingga perlu Anda lakukan:
git checkout .
hanya memeriksa dari indeks di mana penghapusan telah dipentaskan.sumber
Kerjakan saja
git checkout path/to/file-I-want-to-bring-back.txt
sumber
error: pathspec 'file.ext' did not match any file(s) known to git.
git status
dikatakan tentang itu?git checkout HEAD -- file.ext
membantu memulihkannya.Untuk memulihkan semua penghapusan yang tidak bertahap sekaligus, secara otomatis, tanpa menentukan setiap jalur:
Untuk memulihkan semua penghapusan bertahap , secara otomatis, tanpa menentukan setiap jalur:
sumber
git status --long | grep 'deleted:' | awk '{print $2}' | xargs git reset HEAD --
.git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
akan berhasil.Karena Anda sedang melakukan
git checkout .
, sepertinya Anda mencoba mengembalikan cabang Anda kembali ke keadaan komit terakhir.Anda dapat mencapainya dengan a
git reset HEAD --hard
Peringatan
Melakukan hal ini dapat menghapus semua modifikasi terbaru Anda dan membatalkan tahapan modifikasi Anda, misalnya, Anda dapat kehilangan pekerjaan. Ini mungkin apa yang Anda inginkan, tetapi memeriksa dokumentasi untuk memastikan.
sumber
jika kamu digunakan
untuk menghapus file
tidak bekerja, jadi dalam hal ini
harus bekerja
sumber
git checkout HEAD^ path/to/filename
bekerja untuk saya karena saya belum melakukan file.Inilah perintah yang membantu saya di mac saya. Saya mencoba beberapa solusi lain tetapi tidak berhasil untuk saya.
Versi Git pada OSX Mavericks
Perintah
sumber
sumber
Gunakan
git ls-files
untuk checkout file yang dihapus (-d) atau diubah (-m).lihat Bagaimana saya bisa mengembalikan hanya file yang dimodifikasi pada checkout git?
sumber
git ls-files -d | xargs -I{} git checkout "{}"
.Jika Anda ingin mengembalikan semua file sekaligus
Ingatlah untuk menggunakan periode karena ia memberitahu git untuk mengambil semua file.
Perintah ini akan mengatur ulang kepala dan menghapus semua perubahan:
Kemudian jalankan ini untuk mengembalikan semua file:
Kemudian melakukan status git, Anda akan mendapatkan:
sumber
Apakah Anda ingin melihat ini
itu berlaku untuk kasus di mana Anda digunakan
sebelum Anda melakukan sesuatu.
Anda mungkin juga ingin menyingkirkan file yang dibuat yang belum dibuat. Dan Anda tidak menginginkannya. Dengan:
sumber
git checkout -- .
tidak membantu untuk memulihkan file dihapus dan setara dengan apa yang penanya mencoba:git checkout .
. Bagian yang dapat bekerja adalah yang Anda tidak menyalin:git checkout <file_path>
.Ditemukan pos ini sambil mencari jawaban tentang cara menghapus file yang dihapus di direktori kerja saya setelah penggabungan dari cabang orang lain. Belum ada komit yang dibuat setelah penggabungan. Karena ini merupakan penggabungan dalam proses, saya tidak bisa menambahkannya kembali menggunakan:
Saya harus melakukan langkah lain selain mengatur ulang untuk mengembalikan file:
sumber
Jika Anda belum melakukan perubahan apa pun yang harus Anda lakukan adalah menyembunyikan perubahan itu dan Anda akan kembali ke komitmen kerja terakhir.
sumber
jika Anda mencari direktori yang dihapus.
sumber
Berikut adalah beberapa kasus yang berbeda sebagai referensi untuk membantu orang lain:
Jika penghapusan belum dilakukan , perintah di bawah ini akan mengembalikan file yang dihapus di pohon kerja.
Anda bisa mendapatkan daftar semua file yang dihapus di pohon kerja menggunakan perintah di bawah ini.
Jika penghapusan telah dilakukan , cari komit tempat terjadinya, kemudian pulihkan file dari komit ini.
Seharusnya memberi Anda sesuatu seperti
c46e81aa403ecb8a0f7a323a358068345
, Sekarang gunakan komit # di siniSesuatu seperti ini: $ git checkout c46e81aa403ecb8a0f7a323a358068345 -
Jika Anda mencari jalur file untuk dipulihkan, perintah berikut akan menampilkan ringkasan semua file yang dihapus.
Jika Anda hanya ingin menampilkan daftar file:
sumber
Bagi saya yang berhasil adalah
git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
Sebagai contoh
git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(dieksekusi di cabang yang kita inginkan file masuk)
Setelah perintah itu dijalankan, file yang dipulihkan akan ada di lokasi asli (yang perlu dikomit)
sumber
git checkout master path/to/the/file.bin
agar Anda hanya membatalkan penghapusan file itu tanpa kehilangan perubahan lain yang mungkin Anda lakukan. PS: ini seharusnya jawaban yang diterima ...Jika Anda telah menginstal ToroiseGIT maka pilih saja menu "Kembalikan ..." untuk menu pop-up folder induk.
sumber
1. Temukan komitmen tertentu yang ingin Anda kembalikan menggunakan:
2. Kembalikan pada komitmen tersebut menggunakan:
Sekarang cabang lokal Anda akan memiliki semua file pada khususnya
sumber
PERHATIAN: lakukan pekerjaan apa pun yang ingin Anda pertahankan dulu.
Anda dapat mengatur ulang ruang kerja Anda (dan memulihkan file yang dihapus)
sumber
./*
../*
akan diperluas oleh bash untuk mencocokkan file-file tersebut sebelum dikirim ke git.Saya memiliki masalah yang sama namun tidak ada solusi di atas yang berfungsi untuk saya. Yang akhirnya saya lakukan adalah:
- membuat file kosong dengan nama yang sama
- membandingkan file ini dengan riwayat lokal
- menyalin riwayat menyeberang ke file kosong.
sumber
Saya memiliki masalah yang sama dan tidak ada jawaban di sini yang saya coba. Saya menggunakan Intellij dan saya telah memeriksa cabang baru
git checkout -b minimalExample
untuk membuat "contoh minimal" pada cabang baru dari beberapa masalah dengan menghapus banyak file dan memodifikasi banyak lainnya dalam proyek. Sayangnya, meskipun saya tidak melakukan perubahan apa pun pada cabang "contoh minimal" yang baru, ketika saya memeriksa kembali cabang "asli" saya, semua perubahan dan penghapusan dari cabang "contoh minimal" telah terjadi di " cabang asli "juga (atau begitulah tampaknya). Berdasarkangit status
file yang dihapus hanya hilang dari kedua cabang.Untungnya, meskipun Intellij telah memperingatkan saya "menghapus file-file ini mungkin tidak sepenuhnya dapat dipulihkan", saya dapat mengembalikannya (pada contoh cabang minimal tempat mereka sebenarnya dihapus) dengan mengklik kanan pada proyek dan memilih Sejarah Lokal > Tampilkan Riwayat (dan kemudian Kembalikan pada item riwayat terbaru yang saya inginkan). Setelah Intellij memulihkan file di cabang "contoh minimal", saya mendorong cabang ke asal. Kemudian saya beralih kembali ke cabang lokal "asli" dan berlari
git pull origin minimalExample
untuk mendapatkannya kembali di cabang "asli" juga.sumber