2012-04-12 15 views
7

Tôi có một repo git mà tôi muốn thực hiện. Tôi thực hiện bình thường git pull mà không gặp vấn đề gì. Vấn đề là tôi chỉ muốn một thư mục nhất định ra khỏi repo. Suy nghĩ của tôi là tôi có thể sử dụng tệp .gitignore với quy tắc như sau:Chỉ cần kéo một thư mục ra khỏi git repo

#Ignore all files 
/
#Except the one I want 
!/temp 

Sự cố này không hiệu quả. Đó là cách đúng đắn để làm điều đó hay là có một cách tốt hơn?

+0

btw, bỏ qua tất cả các tệp, tôi muốn đi với '/ *' – c00kiemon5ter

+1

Chỉ để lưu nội dung: bạn không thể chỉ kéo một thư mục. Bạn luôn kéo ** lịch sử **, chứ không phải tệp hoặc thư mục. Tất nhiên, bạn chỉ có một _work_ miễn phí trên một số tệp. – fork0

Trả lời

25

git pull tìm nạp và hợp nhất chi nhánh từ xa.

.gitignore chỉ hoạt động tại địa phương và sẽ ẩn các mục nhập trùng khớp khỏi hiển thị trên git status và được thêm vào chỉ mục với git add. Nó không phải là những gì bạn muốn.

Những gì bạn muốn làm, là fetch nhánh từ xa và từ đó, trích xuất thư mục/tệp bạn cần.

$ git fetch <remote> <branch> 
$ git checkout <remote>/<branch> -- relative/path/to/file/or/dir 

tệp/thư mục giờ đây sẽ nằm trong nhánh của bạn và được thêm vào chỉ mục.

+0

Đó chính xác là những gì tôi cần. Cảm ơn bạn rất nhiều! – Dan

+0

Điều đó có nên nói 'xóa' hoặc' từ xa' trên dòng thứ 2 không? –

+0

@ ing0 cảm ơn, đó là một lỗi chính tả;) – c00kiemon5ter