2010-07-23 32 views
10

Chúng tôi đang di chuyển từ Perforce sang GIT. Trong lực lượng, có một số tập tin mà tôi muốn trong kho lưu trữ, nhưng họ không nên được kiểm tra bởi các nhà phát triển cá nhân thường xuyên. Những thứ như tệp dự án eclipse. Mỗi dev có thể nhận được tệp .project ban đầu, nhưng sau đó tinh chỉnh nó một chút cho môi trường của chúng.Đánh dấu tệp trong repo GIT là tạm thời bị bỏ qua

Với P4, tôi có thể lấy các tệp đó, đặt chúng vào danh sách thay đổi riêng và quên chúng. Đồng bộ hóa sẽ không ghi đè lên chúng và chúng sẽ không được cam kết khi tôi cam kết thay đổi mặc định của mình.

Có cách nào để làm điều gì đó tương tự với GIT không?

Tôi muốn vẫn có thể "git commit -a"

+0

có thể trùng lặp của [Committing Machine Specific Configuration Files] (http://stackoverflow.com/questions/1396617/committing-machine-specific-configuration-files) – Senseful

+0

Có thể trùng lặp của [Tôi có thể 'cam kết' một tập tin và bỏ qua nó thay đổi nội dung?] (https://stackoverflow.com/questions/3319479/can-i-git-commit-a-file-and-ignore-its-content-chang es) –

+0

* Tôi vẫn muốn có thể "git commit -a" * - đó chính xác là vấn đề của bạn, ngay tại đó. Với 'git', bạn thường không chỉ cam kết mọi thứ, bạn xem lại những gì đã thay đổi với' git status' và 'git diff', bạn quyết định thêm gì (hoặc' .gitignore'), và sau đó commit chính xác những gì bạn cần . Luồng công việc này đảm bảo rằng các cam kết của bạn không chứa bất kỳ hành trình nào như đối tượng được kiểm tra vô tình hoặc các tệp tạm thời, v.v. Xem, tạo một lịch sử 'git' đang kể một câu chuyện, và tốt hơn bạn nên nói, nó sẽ hữu ích hơn. Tốt hơn là không nên bôi nhọ nó với một đống rác-mind-of-rác. – cmaster

Trả lời

5

Nếu bạn cần một cơ sở chung cho những người (.project, .classpath ...), bạn có thể:

  • phiên bản mẫu phiên bản của các tập tin (.project_tpl, .classpath_tpl ...)
  • sử dụng một filter driver để tạo ra, trên thanh toán, các tập tin thực tế (trong đó sẽ không được phiên bản, và chỉ điều chỉnh cục bộ bởi các nhà phát triển)

alt text

(các 'clean' bước trong cam kết sẽ không làm bất cứ điều gì cho những người mẫu.
Chỉ có 'smudge' bước được sử dụng ở đây, để tạo ra các tập tin cá nhân)

Lưu ý: đây là một "sử dụng sai" nhẹ một trình điều khiển bộ lọc, mà là vụ phải xử lý chỉ nội dung tập tin, không để tạo ra cái mới.
Nhưng nó có thể giúp bạn trong trường hợp của bạn (cung cấp 'smudge' kịch bản của bạn không ghi đè lên một cách mù quáng các tập tin nhật thực nếu chúng xảy ra để đã có mặt ở đây.)

+1

Vì vậy, tôi có thể tạo ra một thói quen smudge khá câm mà loại bỏ .tmpl từ bất cứ điều gì với một phần mở rộng .tmpl. Sau đó tôi có thể thêm .project.tmpl hoặc configuration.xml.tmpl vào git và khi mọi người kéo họ nhận được .project hoặc configuration.xml Tôi đoán tôi cũng có thể thêm các tệp được tạo đó vào .gitignore và vàng. –

+0

@Marc: đó là ý tưởng :) – VonC

10

Bạn có thể tìm cho

git update-index --assume-unchanged .project

+0

Có cách nào để đảm bảo rằng điều này được kích hoạt khi người dùng nhân bản kho lưu trữ, thay vì dựa vào họ nhớ để thực hiện nó? – Programster

+0

Không phải là tôi biết. –

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