git kiểm tra tất cả các tệp


127

Làm cách nào để loại bỏ tất cả các thay đổi trong tất cả các tệp trong kho lưu trữ của tôi?

Giả sử tôi đang ở trong một chi nhánh và tôi đã thực hiện một số thay đổi. git statustrả về một tập hợp các tệp trong "Các thay đổi không được tổ chức cho cam kết" và tôi nhận thấy rằng tôi muốn loại bỏ tất cả các thay đổi này trong tất cả các tệp. Làm cách nào tôi có thể thực hiện việc này với một lệnh duy nhất?

Tôi biết tôi có thể làm như sau để thanh toán chỉ một tệp:

git checkout -- <file>

Tôi nhận thấy rằng git checkout --một mình trả về danh sách tất cả các tệp không giới hạn. Tuy nhiên, tôi không thể tìm ra cách để kiểm tra tất cả chúng, đại loại là git checkout --all.

Tôi đã kiểm tra man git checkoutvà không thể tìm thấy bất cứ điều gì. Ngoài ra, tôi đã thấy Git: Kiểm tra tất cả các tệp ngoại trừ một tệp và đã thử git checkout .và cũng không hoạt động.

Tôi có phải làm điều đó theo chương trình, bằng cách lặp qua git checkout --đầu ra không?

Câu trả lời:


194

Nếu bạn đang ở thư mục gốc của thư mục làm việc, bạn có thể git checkout -- . kiểm tra tất cả các tệp trong HEAD hiện tại và thay thế các tệp cục bộ của bạn.

Bạn cũng có thể thực hiện git reset --hardđể đặt lại thư mục làm việc của mình và thay thế tất cả các thay đổi (bao gồm cả chỉ mục).


hai tùy chọn có tương đương nhau không (nếu chúng tôi đặt lại thành HEAD)?
lucidbrot

10
Không, có những khác biệt nhất định. Ví dụ git checkout -- .sẽ chỉ đặt lại các thay đổi đối với trạng thái của chỉ mục. Vì vậy, nếu bạn đã thêm tệp vào chỉ mục, thì đó là những gì nó sẽ đặt lại. Mặt khác git reset --hardcũng sẽ loại bỏ chỉ mục, vì vậy, ví dụ: nếu bạn có thêm các tệp chưa được theo dõi vào chỉ mục (để bắt đầu theo dõi chúng), chúng cũng sẽ bị xóa. git checkoutcũng cho phép bạn chỉ khôi phục một phần thư mục làm việc bằng cách chuyển một đường dẫn cụ thể hơn có thể rất hữu ích.
poke


4
@poke Xin chào Poke, tôi chắc chắn git checkout -. không hoạt động. Tôi đã thử nó cho nhiều thay đổi không theo giai đoạn.
Aman

2
lệnh khác để đạt được kết quả tương tự: git checkout --force,git reset --hard
Tjalling

3

Cách khác mà tôi thấy hữu ích là:

git checkout <wildcard> 

Thí dụ:

git checkout *.html

Tổng quát hơn:

git checkout <branch> <filename/wildcard>

1
Nếu tính năng cầu vồng được bật trên trình bao của bạn và có các tệp chưa được theo dõi trong thư mục làm việc thì điều này sẽ không thành công trừ khi bạn thoát khỏi dấu hoa thị, ví dụ: git checkout \*hoặc git checkout '*'.
Josh Cooley
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.