2010-04-27 14 views
12

Tôi có một dự án trang web có hơn 50.000 tệp không quan trọng (để phát triển) trong một số thư mục.Git bỏ qua các tệp đã xóa

/website.com/files/1.txt 
/website.com/files/2.txt 
/website.com/files/3.txt 
/website.com/files/etc.txt 

Nội dung trong/tệp đã có trong repo. Tôi muốn xóa tất cả các tập tin trong/tập tin trên bản sao địa phương của tôi nhưng tôi muốn git bỏ qua nó để nó không xóa chúng khi tôi làm một kéo trên máy chủ web.

Bất kỳ ý tưởng nào?

Trả lời

1

Ok Ive đã tìm thấy giải pháp. Đơn giản chỉ cần tạo một repo mới trong các thư mục con và repo cha sẽ bỏ qua chúng.

+1

sẽ hoạt động nhưng không lý tưởng để kết thúc với nhiều nhánh/repos trong nhiều dự án. đi về phía trước có thể trở thành một nỗi đau khi danh sách dự án của bạn trở nên lớn hơn. Tôi khuyên bạn nên trở nên quen thuộc hơn một chút với '.gitignore' và các công cụ quản lý chỉ mục. Có một hướng dẫn khá trong câu trả lời của tôi ở trên. Nó thực sự là khá dễ dàng khi bạn thử một lần ... – MaurerPower

+0

@MaurerPower, trong khi tôi đánh giá cao câu trả lời mô tả của bạn, 'git rm --cached' không phù hợp với yêu cầu của tôi. Ví dụ nếu tôi sử dụng lệnh đó, sau đó cam kết và đẩy. Khi tôi kéo đến một máy chủ khác nó sẽ vẫn xóa các tập tin từ máy chủ đó, mặc dù nó đã không xóa chúng khỏi máy chủ gốc. Tôi đã làm một bài kiểm tra litte, đây là kết quả của tôi: http://pastebin.com/5X0t1KGs – Petah

2

Tạo một repo phụ là một giải pháp, nhưng bạn nên làm cho sub-repo một submodule.

Bằng cách đó:

  • bạn giữ một mối liên hệ giữa nội dung bình thường của bạn và rằng nội dung 'files'
  • nếu nội dung của file 'tiến hóa một ngày nào đó, bạn có thể đăng ký quá trình tiến hóa của nó trong repo chính
  • bạn có thể kiểm repo chính của bạn không có "git submodule update" (có nghĩa là không lấp đầy 'files' nội dung
  • trên triển khai, một git submodule update sau git submodule init sẽ đủ để lấy lại ri phiên bản ght của nội dung 'files'.
6

Mã bên dưới hoạt động trên các tệp đã xóa cũng như sửa đổi để bỏ qua khi bạn thực hiện trạng thái git git.

git update-index --assume-unchanged dir-im-removing/ 

hoặc một tập tin cụ thể

git update-index --assume-unchanged config/database.yml 

Ignore modified (but not committed) files in git?

Hãy coi chừng: Các gợi ý trên các file bị xóa khi bạn làm một "git commit -am" bao gồm các tập tin bị xóa!

Giải pháp phù hợp với tôi là thay vì xóa tệp, chỉ cần để trống nội dung đó. Đây là những gì tôi sử dụng để tắt tiếng một tập tin .htaccess.

10

Bỏ qua toàn bộ thư mục không hoạt động. Tôi phải làm điều này:

for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done 
+2

Tôi cần thay đổi '$ 3' thành' $ 2' git phiên bản 2.3.2 – crizCraig