Tôi đã đọc một vài câu hỏi git ở đây, nhưng không thể tìm thấy câu trả lời cho cái này:Git: sáp nhập chi nhánh công cộng và tư nhân trong khi vẫn giữ một số tập tin còn nguyên vẹn ở cả hai chi nhánh
Tôi có một công cộng và tư nhân các nhánh mà tôi muốn cho phép một số tệp nhất định phân tách.
Đó là các tệp cấu hình có mật khẩu và tùy chỉnh cục bộ của tôi.
Tôi muốn có thể hợp nhất các nhánh theo cả hai cách: từ riêng tư sang công khai và ngược lại, nhưng tôi không muốn các tệp cụ thể đó được hợp nhất tự động.
Có cách nào để thiết lập git theo cách này không? Tôi rất muốn tìm một giải pháp tự động :) - để việc hợp nhất có thể được thực hiện như bình thường.
EDIT: đây là giải pháp mà làm việc cho tôi (Nhờ VonC cho những lời khuyên trên gitattribute)
điều bất ngờ chỉ dành cho tôi là "hợp nhất bảo vệ" bắt đầu làm việc chỉ sau khi file có tách ra ở hai chi nhánh, không phải ngay lập tức sau khi cấu hình sau đây được áp dụng
.gitattributes (track với git nếu bạn muốn chia sẻ điều này) hoặc .git/info/thuộc tính:
file1 merge=keepmine
path/file2 merge=keepmine
keepmine là người quản lý tùy chỉnh merge tên đó chỉ là một lệnh do-không có gì gọi là thay vì người lái xe hợp nhất nội bộ trên các tập tin được lựa chọn, được thành lập dưới
Khi sáp nhập từ tin đến chi nhánh nào tôi thường làm git merge --squash private
. Bằng cách đó, các chỉnh sửa riêng tư sẽ không đi vào lịch sử git trên nhánh công cộng.
.git/config:
#public repository
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = <public repo git url>
#private repository
#has to set up with git init and populated with the initial commit to branch mybranch
[remote "private"]
push = +:
url = /path/to/local/private/repo
[merge "keepmine"]
name = dont_merge_selected_files
driver = echo %O %A %B
[branch "master"]
remote = origin
merge = refs/heads/master
#private branch settings
[branch "mybranch"]
remote = private
merge = refs/heads/mybranch
nếu có một cách để cải thiện điều này xin vui lòng bình luận
hoạt động, cảm ơn! – Evgeny
Điều này chỉ hoạt động khi tệp được thay đổi trong cả hai nhánh. Khi hợp nhất được giải quyết với keepmine, việc hợp nhất sau trong nhánh khác sẽ giải quyết bằng cách recurse. – f3r3nc