Xóa tệp khỏi kho lưu trữ nhưng giữ nó cục bộ


369

Tôi có một thư mục mà tôi muốn xóa trong kho lưu trữ từ xa của mình. Tôi muốn xóa nó, nhưng giữ thư mục trong máy tính của tôi



Vui lòng xem các câu hỏi liên quan được đề xuất khi bạn viết của bạn - bản sao có thể là một trong hai câu hỏi đầu tiên.
Cascabel


Câu trả lời:


637
git rm --cached -r somedir

Sẽ xóa giai đoạn xóa thư mục, nhưng không chạm vào bất cứ thứ gì trên đĩa. Điều này cũng hoạt động cho một tập tin, như:

git rm --cached somefile.ext

Sau đó, bạn có thể muốn thêm somedir/hoặc somefile.extvào .gitignoretệp của mình để git không cố gắng thêm lại.


24
Và sau đó thêm đường dẫn đến .gitignore để git không cố gắng làm cho bạn thêm nó sau.
Grossvogel

3
Điều này sẽ dẫn đến (các tập tin trong) thư mục bị xóa khi anh ta kéo từ xa?
bstpierre

Không phải khi anh kéo; các tệp sẽ bị xóa cục bộ trong quá trình hợp nhất tự động của pull. Sau đó, việc đẩy sẽ khiến các tệp bị xóa phía máy chủ.
Walter Mundt

7
Điều gì xảy ra nếu tôi có một điều khiển từ xa thứ ba? Các tập tin tương ứng sẽ được gỡ bỏ trong một lần kéo trong tương lai? Tôi hỏi bởi vì tôi cảm thấy đây là một trường hợp sử dụng khá phổ biến, tức là kiểm tra một số tệp vào repo, nhận ra vào một ngày sau đó, chúng chuyển hướng giữa các điều khiển từ xa, vì lý do chính đáng và không bao giờ nên ở trong repo ở nơi đầu tiên, muốn để giải quyết điều đó bằng cách giữ tất cả các kiểm tra cục bộ chính xác như hiện tại, nhưng xóa các tệp khỏi repo.
Bobby Jack

6
Đối với các tệp đơn lẻ, bạn có thể thực hiệngit rm --cached path/to/file
Travis Reeder

3

Tôi sẽ chỉ:

  • Di chuyển thư mục ra khỏi cây làm việc của bạn
  • git rm thư mục, cam kết thay đổi
  • Thêm vào .gitignore(hoặc .git/info/excludes), cam kết thay đổi
  • Di chuyển thư mục trở lại

8
đây không phải là một giải pháp tốt - nếu bạn có một thư mục rất lớn thì sao?
ioleo

có lẽ cần phải sử dụnggit rm -r
theUtherSide

1
@loostro không di chuyển nó sang thiết bị khối khác. Hầu hết các hệ thống tệp sẽ chỉ cập nhật inode của tệp và không di chuyển toàn bộ thư mục
648trindade
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.