git checkout semua file

127

Bagaimana saya bisa menyingkirkan semua perubahan di semua file di repositori saya?

Katakanlah saya di cabang dan saya melakukan beberapa perubahan. git statusmengembalikan satu set file dalam "Perubahan tidak dipentaskan untuk komit" dan saya perhatikan saya ingin menyingkirkan semua perubahan ini di semua file. Bagaimana saya bisa melakukan ini dengan satu perintah?

Saya tahu saya dapat melakukan hal berikut untuk membayar hanya satu file:

git checkout -- <file>

Saya perhatikan bahwa git checkout --hanya mengembalikan daftar semua file yang tidak terikat. Namun, saya tidak dapat menemukan cara untuk melakukan pembayaran semuanya, sepertigit checkout --all .

Saya memeriksa man git checkoutdan tidak dapat menemukan apa pun. Saya juga melihat Git: Checkout semua file kecuali satu dan mencoba git checkout .dan tidak berhasil juga.

Apakah saya harus melakukannya secara terprogram, dengan melakukan perulangan melalui git checkout --output?

fedorqui 'JADI berhenti merugikan'
sumber

Jawaban:

194

Jika Anda berada di root direktori kerja Anda, Anda dapat melakukan git checkout -- .check-out semua file di HEAD saat ini dan mengganti file lokal Anda.

Anda juga dapat melakukan git reset --hardreset direktori kerja Anda dan mengganti semua perubahan (termasuk indeks).

menyodok
sumber
apakah kedua opsi itu setara (jika kita mengatur ulang ke HEAD)?
lucidbrot
10
Tidak, ada perbedaan tertentu. Misalnya git checkout -- .hanya akan mengatur ulang perubahan status indeks. Jadi jika Anda sudah menambahkan file ke indeks, itulah yang akan diatur ulang. Di sisi lain git reset --hard, indeks juga akan dibuang, jadi misalnya jika Anda menambahkan file yang tidak terlacak ke indeks (untuk mulai melacaknya), file tersebut juga akan dihapus. git checkoutjuga memungkinkan Anda untuk hanya memulihkan sebagian direktori kerja dengan melewati jalur yang lebih spesifik yang bisa sangat berguna.
aduk
1
@vinaykumarreddy Arti Git checkout dua tanda hubung
menyodok
4
@ Poke Hi Poke, saya yakin git checkout -. tidak bekerja. Saya mencobanya untuk beberapa perubahan yang tidak dipentaskan.
Aman
2
perintah lain untuk mencapai hasil yang sama: git checkout --force,git reset --hard
Tjalling
3

Cara lain yang menurut saya berguna adalah:

git checkout <wildcard> 

Contoh:

git checkout *.html

Lebih umum:

git checkout <branch> <filename/wildcard>
Singhak
sumber
1
Jika globbing diaktifkan di shell Anda dan ada file yang tidak terlacak di direktori kerja maka ini akan gagal kecuali Anda keluar dari asterisk, misalnya git checkout \*atau git checkout '*'.
Josh Cooley