Bagaimana saya mengembalikan semua perubahan lokal dalam Git berhasil proyek ke keadaan sebelumnya?
Saya memiliki sebuah proyek di mana aku berlari git init
.
Setelah beberapa komit, saya melakukan git status
yang mengatakan kepada saya semuanya up to date dan tidak ada perubahan lokal.
Kemudian saya membuat beberapa kali perubahan dan menyadari aku ingin membuang semuanya dan kembali ke keadaan semula. Akan perintah ini akan melakukannya untuk saya?
git reset --hard HEAD
1816
12
Jika anda ingin mengembalikan perubahan yang dibuat ke copy pekerjaan anda, lakukan ini:
Jika anda ingin mengembalikan perubahan yang dibuat untuk indeks (yaitu, bahwa anda telah menambahkan), melakukan ini. Peringatan ini akan me-reset semua komit unpushed untuk menguasai!:
Jika anda ingin mengembalikan perubahan yang telah anda lakukan, lakukan ini:
Jika anda ingin menghapus terpantau file (misalnya, file baru, file yang dihasilkan):
Atau tidak terlacak direktori (misalnya, baru atau dihasilkan secara otomatis direktori):
Catatan: Anda mungkin juga ingin menjalankan
sebagai
akan tidak hapus terpantau file, yang mana seperti git-bersih akan menghapus file dari dilacak direktori root yang tidak di bawah git pelacakan. PERINGATAN HATI - HATI DENGAN HAL INI! Hal ini membantu untuk menjalankan kering-lari dengan git-bersihkan terlebih dahulu, untuk melihat apa yang akan dihapus.
Ini juga sangat berguna ketika anda mendapatkan pesan error
Yang dapat terjadi ketika melakukan beberapa hal, salah satu yang menjadi memperbarui kerja copy ketika anda dan teman anda memiliki kedua menambahkan file baru dengan nama yang sama, tapi ia's berkomitmen ke kontrol sumber pertama, dan anda don't peduli tentang menghapus anda tidak terlacak copy.
Dalam situasi ini, melakukan dry run juga akan membantu menampilkan daftar file yang akan ditimpa.
Re-clone
.gitignore
(seperti membangun file).gitignore
Berikut adalah perintah lain saya lupa sehari-hari.
Bersih dan reset
.gitignore
(seperti membangun file).gitignore
Bersih
.gitignore
(seperti membangun file).gitignore
Ulang
.gitignore
(seperti membangun file).gitignore
Catatan
Kasus uji untuk mengkonfirmasikan semua di atas (menggunakan bash atau sh):
Lihat juga
git kembali
untuk membuat baru melakukan yang membatalkan sebelum melakukangit checkout
untuk kembali ke masa sebelum melakukan (mungkin memerlukan berjalan di atas perintah pertama)simpanan
sama sepertigit reset
di atas, tetapi anda dapat membatalkannyaJika anda ingin mengembalikan semua perubahan DAN up-to-date dengan arus remote master (misalnya anda menemukan bahwa guru KEPALA telah bergerak maju karena anda bercabang dan mendorong anda sedang 'ditolak'), anda dapat menggunakan
Melihat ke git-reflog. Ini akan menampilkan daftar semua negara bagian itu mengingat (default adalah 30 hari), dan anda hanya dapat checkout salah satu yang anda inginkan. Misalnya:
BAHAYA di DEPAN: (mohon baca komentar. Melaksanakan perintah yang diusulkan dalam jawaban saya mungkin akan menghapus lebih dari yang anda inginkan)
untuk benar-benar menghapus semua file termasuk direktori aku harus lari
hanya mengatakan
ini akan menghapus semua setempat chages. dan anda juga dapat menggunakan kemudian dengan mengatakan
Setelah membaca banyak jawaban dan mencoba mereka, aku've ditemukan berbagai kasus tepi yang berarti kadang-kadang mereka don't sepenuhnya bersih copy pekerjaan.
Berikut ini's saya saat ini bash script untuk melakukan hal itu, yang bekerja sepanjang waktu.
Lari dari kerja copy direktori root.
Saya bertemu masalah yang sama. Solusinya adalah dengan menggunakan
git log
untuk melihat yang versi lokal melakukan ini berbeda dari remote. (E. g. versi lebih3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Kemudian menggunakan git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec` untuk mengembalikan perubahan.
Saya mencari masalah serupa,
Ingin membuang lokal melakukan:
Begitu pula di bawah ini:
Check:
sekarang setempat melakukan yang hilang, kembali ke awal kloning negara, point 1 di atas.
Anda mungkin tidak selalu ingin/perlu untuk menyimpan pekerjaan anda/file dalam direktori kerja anda tapi bukan hanya menyingkirkan mereka sepenuhnya. Perintah git
bersih
akan melakukan ini untuk anda.Beberapa kasus penggunaan umum untuk melakukan hal ini akan menghapus cruft yang telah dihasilkan oleh penggabungan, peleburan, atau alat-alat eksternal atau menghapus file-file yang lain sehingga anda dapat menjalankan membangun bersih.
Menjaga dalam pikiran anda akan ingin untuk menjadi sangat berhati-hati perintah ini, karena dirancang untuk memindahkan file dari direktori kerja yang TIDAK DILACAK. jika anda tiba-tiba berubah pikiran setelah mengeksekusi perintah ini, tidak ada akan kembali untuk melihat isi dari file yang telah dihapus. Alternatif yang lebih aman adalah untuk melaksanakan
yang akan menghapus segala sesuatu tetapi menyimpan semua itu dalam simpanan. Simpanan ini dapat kemudian digunakan.
Namun, jika anda benar-benar ingin menghapus semua file dan bersih direktori kerja anda, anda harus menjalankan
git bersih -f -d
Ini akan menghapus semua file dan sub-direktori yang don't memiliki barang-barang sebagai hasil dari perintah. Hal yang cerdas untuk dilakukan sebelum melaksanakan
git bersih -f -d
perintah untuk menjalankanyang akan menampilkan preview dari apa yang AKAN dihapus setelah melaksanakan
git bersih -f -d
Jadi di sini adalah ringkasan dari pilihan anda dari yang paling agresif dan paling agresif
1: Menghapus semua file secara lokal(yang Paling agresif)
Pilihan 2: Preview atas dampak(Preview paling agresif)
3: Menyimpan semua file (Paling agresif)
git simpanan-semua
Coba ini untuk mengembalikan semua perubahan uncommited di cabang lokal
Tetapi jika anda melihat kesalahan seperti ini:
Anda dapat menavigasi ke '.git' folder kemudian menghapus indeks.mengunci file:
Akhirnya, jalankan lagi perintah: