2012-02-11 28 views
5

thể trùng lặp:
Locking binary files using git version control systemTrong Git, có cách nào để đánh dấu một tệp là "thuần túy" không?

Tôi cam kết một tập tin mà không bao giờ nên sáp nhập, nhưng ghi đè (có lẽ với một cảnh báo) khi những người khác kéo. Có cách nào để hoàn thành điều này không?

+1

Bằng cách nào "thuần"? Nó là một tập tin có nguồn gốc, hoặc một tập tin nhị phân có lẽ? – cmbuckley

+0

Tôi không thể nghĩ ra một từ nào khác. Unmergable, có lẽ? Có, cho các mục đích của chúng tôi, chúng ta hãy nói nó là một tập tin có nguồn gốc. –

+0

Điều này có mùi giống như một 'tôi cần khóa trong Git' đối số, mặc dù được diễn đạt khác nhau. Những gì bạn đang yêu cầu đi ngược lại tinh thần của một DVCS. – Perception

Trả lời

5

Có một chút không rõ tình hình thực tế của bạn là gì. Câu hỏi đầu tiên bạn nên tự hỏi là liệu tệp có thực sự cần được theo dõi hay không - các tập tin không được hấp dẫn thường là các tập tin có nguồn gốc, như bạn đề xuất trong các bình luận, và do đó không cần phải theo dõi (và không nên).

Nếu bạn thực sự cần theo dõi nó, đó có phải là tệp nhị phân không? Git không cố gắng hợp nhất các tệp nhị phân - chúng luôn hiển thị dưới dạng xung đột hợp nhất. Git là tốt về phát hiện các tập tin nhị phân, vì vậy trong trường hợp này, bạn có thể an toàn. Nếu nó không phải là một tệp nhị phân, thì bạn vẫn buộc Git phải xử lý nó một cách thích hợp. Trong tệp .gitattributes, hãy thêm một cái gì đó như:

path/to/file merge=binary 

Điều này sẽ trực tiếp xử lý tệp này dưới dạng tệp nhị phân nhằm mục đích hợp nhất. Bạn cũng có thể, nếu bạn muốn, xác định một trình điều khiển hợp nhất tùy chỉnh. Sử dụng merge=my_merge_driver trong file gitattributes, sau đó trong gitconfig bạn thêm một cái gì đó như:

[merge "my_merge_driver"] 
    name = descriptive name 
    driver = my_script %O %A %B 

Ba đối số cho kịch bản là tổ tiên phiên bản phổ biến (O cho trang gốc), phiên bản chi nhánh hiện tại của (A) và các chi nhánh của nhau Phiên bản (% B) - chúng là các tệp tạm thời và trình điều khiển hợp nhất có nghĩa vụ thực hiện hợp nhất và để lại kết quả trong% A. Xem man gitattributes để biết thêm về điều này.

+0

Thao tác này có hoạt động ngay cả khi hợp nhất nhanh không? – Carl

+0

@carleeto Trình điều khiển hợp nhất chỉ được gọi nếu tệp thực sự cần được hợp nhất, không phải là trường hợp trong quá trình hợp nhất nhanh. Nhưng trừ khi bạn đang làm một cái gì đó khác với OP ở đây, điều đó không quan trọng - sự hợp nhất nhanh về phía trước đã ghi đè lên phiên bản gốc với phiên bản đã hợp nhất. – Cascabel

+0

Cảm ơn vì điều đó. Tôi chỉ cố gắng để giữ một số sản phẩm xây dựng gây phiền nhiễu đã được trong repo chính từ distracting tôi trong chi nhánh của tôi :) – Carl

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