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?

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).


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


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>

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.