2016-03-08 19 views
6

Tôi có một dự án với hai chi nhánh foobaar. Trong dự án này, tôi có một tệp cấu hình database1.propertiesdatabase1.properties nơi các thuộc tính cơ sở dữ liệu được lưu trữ cho tên lược đồ ví dụ và mật khẩu lược đồ. Khi tôi làm việc trên nhánh foo, tên lược đồ là foo và mật khẩu là foo và khi tôi đang làm việc trên tên lược đồ nhánh baar là baar và mật khẩu là baar. Làm thế nào để nói với git rằng các tập tin thuộc tính này chỉ dành cho hệ thống cục bộ của tôi và không nên được đẩy đến repo gốc? Tôi sử dụng egit và cũng tortoiseGit.cách chỉ định phiên bản tệp cục bộ với git

+0

Có lẽ bạn cần phải nhân bản cục bộ dự án ... –

+0

Có thể bạn không thêm chúng bằng 'git add' – Black

+1

Và thêm chúng vào .gitignore –

Trả lời

3

Với một nhánh đơn lẻ, bạn không thể ngăn các tệp được chọn bị đẩy.

Khi nhánh bị đẩy, tất cả các cam kết sẽ được đẩy tới điều khiển từ xa.

Là một workaround bạn có thể có những thay đổi của bạn (cụ thể để địa phương) tại một chi nhánh khác nhau (foo-local, bar-local vv) và bất cứ khi nào bạn muốn những thay đổi trong hệ thống địa phương, sử dụng git merge local-branch --no-commit --no-ff hoặc lệnh tương tự như sáp nhập vào chi nhánh thực tế (ý chí này không hợp nhất các thay đổi cụ thể tại địa phương của bạn với nhánh theo dõi từ xa). Khi bạn đã hoàn tất, bạn có thể loại bỏ những thay đổi này (tuy nhiên những thay đổi này sẽ luôn luôn có trong nhánh địa phương và có thể áp dụng cho nhánh thực tế bất kỳ lúc nào bạn muốn).

1

Way 1 - rebase tục

Giả sử có 3 chi nhánh:

  • master cho công chúng
  • boo cho tin
  • baar cho tin

Something như thế này:

The 2 branches

Bạn phát triển một cái gì đó trên master chi nhánh, sau đó rebase foo và chi nhánh baar trên tổng thể. Bạn cần (1) Thanh toán foo, (2) rebase foo vào master, (3) Thanh toán baar, (4) rebase baar lên thạc sĩ, sau đó nó sẽ trở thành:

enter image description here

Note: phải lặp lại các bước đó lặp đi lặp lại.

Cách 2 - Hợp nhất

Giả sử cùng 3 chi nhánh.

Thanh toán foo, và hợp nhất master vào foo:

enter image description here

Làm samething trên baar chi nhánh, và cuối cùng bạn sẽ nhận được:

enter image description here

Sau khi phát triển một số về tổng thể, thực hiện lại các bước đó và nhận được:

enter image description here

Way 3 - submodule

2 cách trên là một chút nguy hiểm, nếu bạn đẩy tất cả các chi nhánh từ xa. Bằng cách này phức tạp hơn, bạn cần phải biết cách sử dụng mô-đun con, nhưng tôi thích nó hơn. :)

(1) Chuẩn bị kho dữ liệu cho cơ sở dữ liệu riêng tư, bạn có thể thanh toán chi nhánh giữa foo/baar.

enter image description here

enter image description here

(2) Chuẩn bị một repo/đơn giản bình thường như một container, một cái gì đó như thế này:

enter image description here

enter image description here

(3) Sau đó thêm rằng dữ liệu repo như là một submodule vào repo này:

enter image description here

Bạn sẽ nhận được những sau khi cam kết:

enter image description here

enter image description here

(4) Một lần nữa, thêm repo công cộng, tên test đây, như một submodule:

enter image description here

enter image description here

Bây giờ, bạn có thể phát triển trong đó test repo và kiểm tra bất kỳ nhánh nào của dữ liệu repo ở phía bên kia.

Lưu ý 1: Yêu cầu điều chỉnh đường dẫn tốt.

Lưu ý 2: nếu bạn không thích submodule, bạn chỉ có thể sử dụng một thư mục làm vùng chứa, sau đó đặt hai repo vào đó.

Way 4 - Hợp nhất với không cam kết hoặc bí

Như this answer (bởi @Royal Pinto) cho biết, tôi chỉ cho các hoạt động TortoiseGit đây.

enter image description here

enter image description here

Lưu ý: các dữ liệu cá nhân đã được tổ chức vào tập tin chỉ mục. Vì vậy, lệnh cam kết tiếp theo sẽ cam kết nó thành repo.

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