Tôi có nên git bỏ qua tệp xcodeproject / project.pbxproj không?


101

trong một dự án XCode, tôi đã thay đổi tệp xcodeproject / project.pbxproj, nhưng thông tin vô ích đối với tôi, nó để biên dịch.

Tôi có nên git bỏ qua tệp này và tệp xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate không?


Các tệp .xcuserstate có thể bị bỏ qua, chỉ là tệp pbxproj.
Kendall Helmstetter Gelner

Không, đây là câu trả lời của bạn: stackoverflow.com/questions/49478/...
jeswang

Câu trả lời:


128

Cập nhật trong ánh sáng của Trình quản lý gói Swift: Nếu bạn đang xây dựng một dự án dưới dạng gói Swift - bạn chắc chắn nên bỏ qua tệp này vì nó có thể được tạo bằng hệ thống tệp như nguồn sự thật. Bạn có thể làm điều đó bằng cách sử dụng lệnh sau:

$ cd ~/Projects/MyProjectFolder/
$ swift package generate-xcodeproj

Đối với câu trả lời không phải SwiftPM - hãy xem bên dưới.

Tệp này chứa danh sách tất cả các tệp trong dự án, cài đặt của mục tiêu và tệp nào thuộc về mục tiêu nào. Nó có lẽ là tệp lớn nhất trong gói dự án. Bạn không nên bỏ qua tập tin này. Có một số điểm cho điều này:

  1. Bạn có thể không muốn làm việc trong dự án này một mình hoặc;
  2. Bạn đang lập kế hoạch làm việc trên dự án từ các máy khác nhau;
  3. Bạn sẽ muốn chia sẻ cơ sở mã của mình với những người khác;

6

Đó là tệp duy nhất bạn muốn có trong kho lưu trữ của mình từ gói xcodeproj. Tệp đó chứa tất cả thông tin cho các tệp mục tiêu và cài đặt bản dựng.


1
Câu trả lời này đã từng đúng, nhưng hiện tại là sai. Không đúng là nó chứa "tất cả thông tin" (một số thứ như tệp thực thi tùy chỉnh được lưu trữ trong một tệp khác, ví dụ: không gian làm việc được lưu trữ trong một tệp khác, v.v.), cũng không đúng khi đó là "tệp duy nhất" mà bạn muốn lưu trữ. xem câu hỏi về những gì cần bao gồm trong .gitignore - stackoverflow.com/questions/49478/…
Adam

1
điều đó có vẻ được nghĩ ra ... hãy làm theo điều đó trong tương lai.
Grady Player

4

Thật không may, nếu Cài đặt bản dựng của bạn bao gồm ký mã, bạn phải nhập lại thực thể ký mã của mình sau mỗi lần "git pull" nếu một thành viên khác trong nhóm đã thay đổi nó. Đối với tôi, có vẻ như thông tin này phải nằm trong cài đặt người dùng, không phải tệp pbxproj chung.


2
Bạn có thể thiết lập tính năng ký mã để mỗi người trong số các bạn trong dự án có một cấu hình ký mã khác nhau khớp với cùng một cài đặt (được chia sẻ) trong dự án, ví dụ: bằng cách sử dụng tên ký tự đại diện và sau đó mỗi người trong số các bạn khớp với nó riêng biệt hoặc bằng cách Ví dụ: tất cả đều thuộc cùng một nhóm iTunes và chia sẻ hồ sơ.
Adam

3

Nếu bạn loại trừ project.pbxproj Jenkins xây dựng sẽ không thành công. Vì vậy, điều này rất quan trọng nếu bạn sử dụng Jenkins.


0

Tôi nhận thấy rằng tôi cũng cần giữ (các) tệp xcworkspace. Nếu không, dự án với một dự án phụ đã bị phá vỡ.


0

Bạn có thể sử dụng Xcodegen để tạo pbxproj từ tệp đặc tả dự án YAML, sau đó bạn có thể bỏ qua pbxproj trong git và tạo chúng bất cứ khi nào bạn cần.

Tôi đã sử dụng Xcodegen trên một dự án thứ hai có kiến ​​trúc mô-đun (nhiều pbxproj) và hơn thế nữa, 8 nhà phát triển đang làm việc trên đó.

https://github.com/yonaskolb/XcodeGen

Hy vọng nó giúp.


0

project.pbxproj là một tệp quan trọng trong gói cấu hình Xcode. Nó chịu trách nhiệm duy trì các tham chiếu đến tất cả các tệp được liên kết và các nhóm của chúng, các khung được liên kết và quan trọng nhất là cài đặt xây dựng của dự án. Do đó, chúng tôi không thể loại trừ project.pbxproj khỏi kiểm soát phiên bản.

Đây là tổng quát .gitignorecủa tôi cho Dự án Xcode của tôi.

# OS X Finder
.DS_Store

# Xcode per-user config
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser
*.xcworkspace
xcuserdata

# Build products
build/
*.o
*.LinkFileList
*.hmap

# Automatic backup files
*~.nib/
*.swp
*~
*.dat
*.dep
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.