Xóa tệp bằng Git / GitHub


115

Trước hết, tôi mới đến Git.

Tôi đã xóa một loạt các tệp cục bộ trên máy Mac của mình bằng Finder. Tôi muốn các tệp mà tôi đã xóa không còn hiển thị trong nhánh hiện tại, nhưng chúng có.

Bất kỳ người dùng Git nào cũng biết một lệnh để cập nhật chỉ mục?


Câu trả lời:


226

Tôi nghĩ rằng đây sẽ là một cách đơn giản hơn để làm những gì bạn muốn:

git add . -A 

Sau đó, bạn sẽ làm:

git commit -m "removed some files"

Như đã nói ở trên.


Cảm ơn bạn. Và tôi vừa viết bí danh bashđể làm những điều trên. Kinh ngạc.
Zack

12
Cờ -A làm gì?
Kim hoàng tử

1
@KimPrince - Theo kernel.org , "-A --all Like -u, nhưng khớp <filepotype> với các tệp trong cây làm việc ngoài chỉ mục. Điều đó có nghĩa là nó sẽ tìm thấy các tệp mới cũng như dàn dựng nội dung được sửa đổi và loại bỏ các tệp không còn trong cây làm việc. "
j08691

3
@KimPrince git help addsẽ cho bạn biết -Aý nghĩa của nó và liệt kê tất cả các công tắc khác.
Marcin Orleansowski

1
Điều này làm nhiều hơn là chỉ xóa các tập tin bị xóa. Nó thêm tất cả các tập tin được thay đổi trong thư mục vì vậy đây không thực sự là một câu trả lời thỏa đáng.
Alex

19

Bạn có thể thấy các tệp đã bị xóa, vẫn được 'theo dõi' với:

git ls-files --deleted

Để xóa các tập tin từ một chi nhánh, bạn có thể làm một cái gì đó như thế này:

git ls-files --deleted -z | xargs -0 git rm

Từ man git-rm:

Xóa các tệp khỏi chỉ mục hoặc từ cây làm việc và chỉ mục. git-rm sẽ không xóa một tập tin khỏi thư mục làm việc của bạn. (Không có tùy chọn để xóa tệp 13 chỉ khỏi cây công việc và vẫn giữ nó trong chỉ mục; sử dụng / bin / rm nếu bạn muốn làm điều đó.)

Cuối cùng, để thực hiện "loại bỏ", hãy làm một cái gì đó như:

git commit -m "removed some files"

Sau đó, bạn cần phải thực hiện thay đổi -git commit -m "removed some files"
James Polley

17

Tôi không biết nếu điều này đã được thêm vào git kể từ các câu trả lời trước đó, nhưng tôi chỉ sử dụng

git add -u
git commit -m "Removed some files"

để đạt được điều tương tự.


Điều này hoạt động cho trường hợp sử dụng được liệt kê, nhưng điều này không chỉ thêm việc xóa các tập tin. Nó thêm tất cả các tệp đã được thay đổi theo bất kỳ cách nào, vì vậy đây thường không phải là cách tốt để xóa tất cả các tệp đã bị xóa trừ khi đó là những thay đổi duy nhất bạn đã thực hiện.
Alex

2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Thay thế deletefile.name bằng tệp cần xóa. Để được giải thích chi tiết chuyên sâu, hãy xem qua bài viết hay https://help.github.com/articles/remove-sensitive-data

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.