2012-07-16 36 views
6

thể trùng lặp:
GIT: Ignoring Version-Controlled FilesLàm thế nào để bỏ qua các tập tin hiện có, cam kết trong git?

Có rất nhiều câu trả lời xung quanh .gitignore trên Stackoverflow, tôi vẫn chưa tìm ra câu trả lời:

Tôi có một dự án git hiện có, với số readme.md và một số sample_folder/, cả ở cấp cao nhất. Tôi muốn loại bỏ chúng khỏi kho lưu trữ git (hub) của tôi nói chung. Nhưng tôi muốn bỏ qua chúng, có nghĩa là, ngăn chặn chúng được kéo ở tất cả, trong một kho lưu trữ cục bộ nhân bản nhất định, tức là trên một máy triển khai.

.gitignore Tôi hiểu, chỉ là bỏ qua không cam kết tệp? Thành thật mà nói, tôi không tìm thấy bất cứ điều gì xung quanh ẩn (từ kéo + cam kết) công cụ mà đã được cam kết ...

Trong những ngày của Perforce tôi sẽ đơn giản loại trừ nó từ tương ứng 'khách hàng spec' (đó là khá gần với repo được sao chép cục bộ):

//whatever/myProject 
-//whatever/myProject/readme.md 
-//whatever/myProject/sample_folder 

Chắc chắn, tôi có thể giải quyết cho nhánh thứ hai nơi tôi chỉ cần xóa readme và toàn bộ thư mục mẫu. Nhưng sau đó, tôi sẽ phải tiếp tục hợp nhất mọi sửa chữa nhỏ từ 'phát triển'. Đó là một cái gì đó, tôi thà tránh ... Tôi thà thích một 'ngoại lệ' địa phương trên một chi nhánh (theo dõi).

Ngoài ra, tôi nghĩ git rm --cached mỗi khi tôi làm cam kết (mà cũng có thể xảy ra ngay bây giờ và sau đó từ 'repo triển khai' của tôi) ...

+0

thật khó hiểu vấn đề của bạn ... tại sao bạn muốn có tệp bỏ qua các lần kéo? Tôi có thể tưởng tượng nguồn gốc của rắc rối, vì không phải tất cả các repos sẽ ở cùng một trạng thái trong khi ở cùng một cam kết – CharlesB

+0

Vâng, đối với bất kỳ người phát triển/nhà phát triển nào thì hữu ích để có ví dụ: sample_folder (hoặc tài liệu-thư mục hoặc readme) , trong một kịch bản triển khai, bất kỳ điều gì trong số này là siêu thực, thậm chí có thể có vấn đề ... –

+0

@ Wooble: Điều này nghe có vẻ rất hứa hẹn! Cảm ơn đống. Sẽ điều tra. –

Trả lời

0

Đây không phải là một vấn đề về .gitignore. Nếu đây là không phải là mã, bạn nên theo dõi nó trong một kho lưu trữ riêng biệt qua mô-đun con và chỉ cần không chạy bất kỳ lệnh git submodule nào trên máy chủ. Hoặc chỉ cần loại bỏ việc này trên máy triển khai sau khi thanh toán.

2

Có vẻ như bạn có thể đang sử dụng thanh toán git làm phương pháp triển khai của mình. Đôi khi điều này làm việc, đôi khi nó cần nhiều hơn một chút. Nếu có các tạo phẩm phát triển trong kho lưu trữ, bạn cần thêm một chút nữa.

Cách rõ ràng nhất để giải quyết vấn đề này là có tập lệnh triển khai thực hiện thao tác kéo và sau đó xóa các thư mục và tệp thừa. Điều này không may khiến bạn có một kho lưu trữ một phần có thể gây nhầm lẫn cho mọi người và nó thêm một tập lệnh đặc biệt mà phải nhớ để được sử dụng và được cập nhật.

Một cách khác để xử lý nó là có nhánh triển khai. Tạo một nhánh, xóa các tệp và thư mục vi phạm rồi kéo từ nhánh đó. Có, bạn phải hợp nhất các thay đổi từ chi nhánh phát triển của bạn vào triển khai. Bạn thấy điều này như một việc vặt, nhưng nó là một biện pháp bảo vệ. Nếu bạn đang nhanh chóng tạo cơ hội phát triển và triển khai nhanh chóng, bạn có thể gặp sự cố với chu kỳ triển khai của mình.

Bạn muốn có một bước giữa phát triển và triển khai trong đó bạn có thể xem xét và kiểm tra các thay đổi của mình. Nếu không có gì khác, điều này ngăn cản nhà phát triển A đẩy một thay đổi xấu và quản trị viên B kết hợp sai lầm bằng cách vô tình kéo nó vào sản xuất. Bạn cũng muốn có thể thúc đẩy phát triển và chia sẻ công việc của mình với các nhà phát triển khác mà không C ALNG rủi ro nó bị đẩy vào sản xuất.

Bạn có thể là người duy nhất xử lý việc phát triển và triển khai ngay bây giờ, nhưng bạn có thể không muộn hơn. Nếu không có gì khác, điều này bảo vệ bản thân khỏi vô tình đẩy một sự thay đổi không ổn định để phát triển và sau đó kết hợp sai lầm đó bằng cách kéo nó vào triển khai trước khi bạn có cơ hội để suy nghĩ.

+0

Để phát hành nghiêm túc, tôi chắc chắn sẽ có một nhánh 'ổn định', tất nhiên. Nhưng vì sự triển khai nhanh chóng và dơ bẩn của tôi, tôi rất nỗ lực :) Và tôi muốn đẩy các bản sửa lỗi nhỏ (mà không thấy nhiều thay đổi không có thật, tức là tất cả những thay đổi đó, ngay cả khi tôi không thêm chúng vào sân khấu). Tôi sẽ điều tra nhận xét của Wooble ở trên ... –

5

Có lẽ tôi đã nhận được câu hỏi sai, nhưng sẽ không giải quyết được vấn đề của bạn sau đây?

git rm --cached readme.md sample_folder/* 
echo "readme.md" >>.gitignore 
echo "sample_folder/*" >>.gitignore 
git commit -am "Untracked some files" 
Các vấn đề liên quan