2011-12-06 35 views
5

Tôi có ứng dụng Rails với tệp config/my_private_data.yml. Tôi muốn đẩy toàn bộ ứng dụng vào cả máy chủ thử nghiệm của tôi và tới github.Git: Chỉ đẩy tệp cấu hình riêng tư để kiểm tra kho lưu trữ chứ không phải để github?

Tuy nhiên, khi tôi đẩy tới máy chủ thử nghiệm, tôi muốn bao gồm tệp riêng tư. Khi tôi chuyển sang github, tôi không muốn bao gồm tệp riêng tư. Cách dễ nhất để đi về vấn đề này là gì?

+2

Riêng tư? Nếu nó là một desaster lớn nếu tập tin trở thành công khai, không bao gồm nó ở tất cả (sử dụng một 'config/private_data.yml.template' với giá trị mặc định). Rất có thể là bạn hoặc ai đó mắc lỗi và bạn có dữ liệu về github hoặc ở nơi khác mà bạn chưa bao giờ nghĩ đến. – Unapiedra

+0

Không riêng tư, nhưng không phải thứ gì đó mà tôi muốn chia sẻ. Tôi sẽ không đăng mã số hạt nhân của tôi để github hoặc thậm chí đặt chúng trong ứng dụng của tôi. – Clay

+0

điều này ở đây phải là một giải pháp: http://stackoverflow.com/questions/1836742/using-git-how-do-i-ignore-a-file-in-one-branch-but-have-it-committed- trong một khác –

Trả lời

1

Bạn có thể thiết lập hai nhánh. mastersecret. Sau đó, bạn có thể thêm và cam kết config/my_private_data.yml trong chi nhánh secret mà sau đó bạn có thể đẩy vào nhánh chính tại máy chủ kiểm tra.

touch config/my_private_data.yml 
git checkout -b secret 
git add config/my_private_data.yml 
git commit -m 'Commited secret file' 
git push testserver_repo_url secret 
git checkout master 
git push repo_on_github master 

Sau đó, thực hiện git checkout secret; git rebase master nếu bạn có cam kết mới về chính.
Không cam kết số secret và nếu bạn làm như vậy, hãy thực hiện lựa chọn cam kết đó.


Chắc chắn, không phải tất cả đều tốt với phương pháp này. Từ những gì tôi có thể nghĩ bây giờ, bạn có thể vô tình đẩy nhánh bí mật đến github. Ngoài ra, bạn không thể thực sự làm việc trong master nếu bạn cần my_private_data.yml -file (bạn có thể thực hiện thanh toán tệp đó từ nhánh bí mật).

+0

Có cách nào tốt hơn để tiếp cận điều này không? Trường hợp sử dụng của tôi là tôi muốn đẩy tới github để sao lưu nhưng đẩy tới máy chủ thử nghiệm của tôi để thử nghiệm và ứng dụng sẽ không tải mà không có tệp riêng tư. – Clay

+0

Tôi đoán câu hỏi tiếp theo sẽ là liệu điều ngược lại là có thể - nói, tôi làm việc trên chủ, bao gồm tập tin bí mật, và sau đó tôi đẩy một nhánh của chủ mà không có tập tin bí mật để github. Sẽ có một cách nhanh chóng và/hoặc kịch bản để luôn luôn chi nhánh tổng thể, xóa tất cả các trường hợp của tập tin bí mật, và sau đó đẩy chi nhánh để github? – Clay

+0

@Clay Về lý thuyết, bạn có thể sử dụng móc (google git hooks) nhưng không có cách nào để xóa tất cả các phiên bản của tệp bí mật khỏi git (vì bạn không thể thay đổi lịch sử git). – Unapiedra

Các vấn đề liên quan