2010-02-07 33 views
6

Tôi sử dụng git làm hệ thống kiểm soát phiên bản chính của mình và gần đây đã bắt đầu sử dụng git trên các dự án CakePHP của tôi. Đây là hiện tại tập tin .gitignore tôi:Sử dụng Git với dự án CakePHP của bạn

app/tmp 
vendors/ 

Như được sử dụng trong repo cakephp git, nhưng điều này gây ra nhiều việc hơn một chút cho tôi khi triển khai dự án đến một máy chủ, bởi vì tôi phải đi vào và tạo ra tất cả các app/tmp/sub-directories bằng tay trước khi chúng hoạt động chính xác. Có cách nào để thiết lập nó để bỏ qua các nội dung trên các thư mục này, nhưng vẫn có chúng dưới git kiểm soát để chúng xuất hiện khi tôi sao chép repo vào thư mục nóng?

Tôi cũng đang gặp vấn đề với chỉ mục git được đặt lại trong khi tôi đang làm việc, điều này khiến tôi phải thực hiện nhiều cam kết hơn là cần thiết, cũng có ý tưởng gì không?

+0

Bạn có thể giải thích thêm về vấn đề của mình với chỉ mục git không? Bước nào sẽ tái tạo sự cố? –

+0

Bạn có thể muốn câu trả lời từ http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git-repository về cách thêm các thư mục nhưng bỏ qua nội dung của chúng . –

+0

Tôi không chắc chắn về các hoạt động đang gây ra sự cố, nhưng dường như ngẫu nhiên tất cả các tệp trong chỉ mục được hiển thị là đã xóa, sau đó tôi phải thêm lại tất cả các tệp vào chỉ mục. – trobrock

Trả lời

11

Git chỉ lưu trữ các tệp, chứ không phải thư mục, vì vậy bạn có thể thêm ví dụ vào một tệp ẩn vào thư mục đó và cam kết.

  1. Remove ứng dụng/tmp/từ .gitignore
  2. ứng dụng touch/tmp/.keep
  3. git add app/tmp/.keep
  4. git commit
  5. Thêm ứng dụng/tmp/to. gitignore
+0

Ok yea đó là những gì tôi sử dụng để làm, tôi chỉ không thể nhớ làm thế nào để làm điều đó. – trobrock

4

Như đã đề cập, git chỉ lưu trữ tệp chứ không phải thư mục. Theo mặc định, tệp .gitignore của bánh sẽ bỏ qua tất cả nội dung trong thư mục tmp để ngăn các tệp tmp được thêm vào kho lưu trữ của bạn.

Bạn có thể (và nên) Tuy nhiên làm được điều này sau khi bạn tạo một dự án:

cd /my/app 
git add -f tmp 

mà sẽ làm điều này:

$ git status 
# On branch master 
# 
# Changes to be committed: 
# (use "git rm --cached <file>..." to unstage) 
# 
# new file: tmp/cache/models/empty 
# new file: tmp/cache/persistent/empty 
# new file: tmp/cache/views/empty 
# new file: tmp/logs/empty 
# new file: tmp/sessions/empty 
# new file: tmp/tests/empty 

Như vậy cấu trúc thư mục tmp của bạn đã sẵn sàng để được cam kết, nhưng tất cả các tệp khác trong thư mục tmp của bạn sẽ (tiếp tục) bị bỏ qua.

1

Tệp .gitignore của tôi.

tmp/* 
[Cc]onfig/core.php 
[Cc]onfig/database.php 

webroot/files/ 
webroot/img/photos/ 

!empty 
.DS_Store 

Nếu bạn nhận thấy tôi có! Rỗng giúp tôi không tạo được tệp .keep trên SVN trước đây. Cuối cùng, bạn cũng sẽ thấy rằng tôi sử dụng cấu hình này cho cả hai dự án CakePHP 1.x và 2.x được ghi chú bởi [Cc]. Tôi có một số thiết lập thư mục mà tôi lưu trữ các tập tin người dùng ở vì vậy tôi luôn luôn bỏ qua chúng là tốt. Cuối cùng, .DS_Store bỏ qua MAC của tôi đã tạo các khung nhìn thu nhỏ cho dự án của tôi.

+0

có nghĩa là gì! – dynamic

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