2013-04-05 32 views
7

Tôi có một cấu trúc thư mục như thế này:Git thanh toán thưa thớt cho việc triển khai web đơn giản

../dir1/dev/project1/... 
      /project2/... 
      /project3/... 
     /production/ 

Tôi có dev (và tất cả các thư mục con của nó) kiểm tra vào git (và github). Tất cả đều hoạt động tốt.

Tôi muốn sử dụng github để triển khai chỉ project2 bằng cách kiểm tra (hoặc kéo hoặc bất kỳ thứ gì) vào thư mục sản xuất của tôi. (Và cụ thể, tôi muốn kiểm tra bằng thẻ.) Vì vậy, điều này sẽ dẫn đến ../dir1/production/project2

Tôi không phải là chuyên gia git nhưng đã đọc một loạt trực tuyến và có vẻ như 'thanh toán thưa thớt' là những gì tôi sau. Tôi đã thử các kết hợp khác nhau của các hướng dẫn hereherehere.

Về cơ bản tôi đã làm:

mkdir <repo> && cd <repo> 
git init 
git remote add –f <name> <url> 
git config core.sparsecheckout true 
echo /project2/ >> .git/info/sparse-checkout 

Khi tôi làm git pull <remote> TAGNAME tôi nhận được fatal: The remote end hung up unexpectedly.

Khi tôi làm git checkout TAGNAME Tôi nhận được error: Sparse checkout leaves no entry on working directory.

Tôi đang làm gì sai?

Trả lời

9

Aha - đã giải quyết. Vấn đề là bằng cách thực hiện init nó đã tạo ra một kho lưu trữ trống, vì vậy tôi không thể thực hiện thanh toán. (Tôi không biết tại sao kéo không hoạt động.)

Thay vào đó, hãy sao chép, nhưng sử dụng tham số -n cho "không thanh toán". Điều này nhân bản kho git nhưng để trống cây làm việc của bạn. Sau đó, thiết lập thanh toán thưa thớt. Sau đó, thanh toán chỉ là những gì bạn muốn.

Để whit:

cd <parentdir> 
git clone -n <url> 
cd <repo_dir> 
git remote add –f <name> <url> 
git config core.sparsecheckout true 
echo /<foldername>/ >> .git/info/sparse-checkout 
git checkout <tagname> 
Các vấn đề liên quan