2010-01-18 36 views
6

Tôi đã có một dự án Xcode dưới git và tôi đã có nhánh "thử nghiệm" khỏi nhánh "master" của tôi. Cả hai chi nhánh đã phân kỳ kể từ chi nhánh (vì vậy không có chuyển tiếp nhanh!), Và tôi đang sáp nhập "thử nghiệm" vào nhánh "master" của tôi.Git Sáp nhập các Tệp nhị phân (trong các tệp dự án Xcode cụ thể)

Tôi đã thiết lập tệp .gitattributes để xử lý tệp Xcode cụ thể (project.pbxproj) dưới dạng nhị phân, vì nó phải được xử lý như vậy. Tuy nhiên, tôi không chắc chắn chính xác làm thế nào để hợp nhất nó. Tôi không chắc những gì tập tin cụ thể nào, nhưng nếu ví dụ nó xử lý các tập tin đã được thêm vào dự án không có cách nào tôi có thể hợp nhất chúng, và do đó tôi sẽ phải tự thêm một số tập tin trở lại dự án (có thể không ghi nhớ tất cả). Những người khác xử lý tình huống này như thế nào?

Ngoài ra, tôi đã đọc rằng bạn phải cập nhật thủ công tệp nhị phân (rõ ràng) hoặc sao chép qua các phiên bản khác nhau. Tuy nhiên, khi tôi vào quá trình hợp nhất, tệp trong bản sao làm việc của tôi là phiên bản "chính". Tôi làm cách nào để truy cập phiên bản "thử nghiệm"? Tôi không thể kiểm tra nó ra vì nó sẽ phá vỡ quá trình sáp nhập.

Cảm ơn bạn đã dành thời gian!

Trả lời

9

Nói chung, đối với tệp nhị phân, tôi khuyên bạn nên sử dụng copy-merge type of .gitattribute directive.
Tức là, tôi chỉ sao chép tệp đến từ đầu kết thúc từ xa. Tuy nhiên,

Tuy nhiên, đối với các tệp .pbxproj, đó có thể không phải là một lựa chọn tốt, là described here.

Việc gói các tệp này sẽ chỉ làm cho vấn đề tồi tệ hơn khi tôi có thể biết - vì bạn đã hoàn toàn không thể hợp nhất các thay đổi.
Trong khi bạn có thể hợp nhất các tệp dự án trong một số trường hợp, nó không phải là thứ bạn nên đếm khi có thể thực hiện. Đề xuất cơ bản là tránh chỉnh sửa các tệp dự án cùng lúc với người khác.

Tôi thích versionning file dự án (như ones for Eclipse), chỉ khi tôi biết họ là:

  • không được sửa đổi thường (chắc chắn không phải bởi mỗi nhà phát triển)
  • chỉ sử dụng đường dẫn tương đối
  • không có dữ liệu cụ thể cho một máy trạm

Tóm lại, nếu các tệp đó không được hợp nhất (hoặc sẽ chỉ là tri lọ để hợp nhất), tôi muốn chúng trong một VCS. Trong trường hợp của bạn, điều đó có thể không hữu ích để có chúng trong VCS nói ở nơi đầu tiên.


Lưu ý: như đã đề cập trong Git manual:

Trong việc hợp nhất, chỉ số giữ ba phiên bản của mỗi tập tin. Mỗi một trong ba "giai đoạn tập tin" đại diện cho một phiên bản khác nhau của tập tin:

$ git show :1:file.txt # the file in a common ancestor of both branches 
$ git show :2:file.txt # the version from HEAD. 
$ git show :3:file.txt # the version from MERGE_HEAD 
+2

Xem thêm http://stackoverflow.com/questions/101752/aborting-a-merge-in-git#107860 – VonC

+0

http://www.iphonedevsdk.com/forum/mac-os-x-development/13586-danger-modifying-pbxproj-file.html cũng có thể liên quan. – VonC

+0

Cảm ơn bạn đã thông tin!Tôi đã kết thúc chạy git mergetool (với opendiff) và xử lý nó với FileMerge. Khá liền mạch. Tôi đã không nhận ra tất cả các bản sao của tập tin mâu thuẫn với bạn! Cảm ơn! –

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