Giả sử bạn đang thực sự yêu cầu là để lấy từ xa tập tin từ một kho git , mà không cần phải một cái cây làm việc của riêng bạn (hoặc một bản sao của kho địa phương), bạn có thể làm điều này:
git archive --format=tgz --remote=<url-to-repo> master -- myfolder | tar zxvf -
Điều này nói để tạo bóng nhựa gzipped của nhánh chính của kho lưu trữ sống tại <url-to-repo>
, nhưng chỉ bao gồm các nội dung theo myfolder
. Đường ống thông qua tar
sẽ hủy lưu trữ dữ liệu và đặt nó trong thư mục hoạt động hiện tại.
Nếu bạn đang thực sự cố gắng quản lý một cây đang hoạt động và làm việc với hai nhà phát triển khác , thì những gì bạn đang yêu cầu làm thực sự chống lại hạt của công cụ . Nhưng bạn sẽ phải phức tạp hơn nhiều về những gì bạn đang cố gắng để thực hiện một đề xuất tốt cho luồng công việc.
Cập nhật:
Vì vậy, nó âm thanh như nếu bạn muốn lấy chỉ là một thay đổi thư mục ở một cây làm việc quản lý . Xin lỗi, nhưng Git không hoạt động theo cách đó. Như tôi đã nói trong các ý kiến bên dưới, Git quản lý cây của các tệp. Nó không cho phép một phần của một cây được sửa đổi, và một phần khác để được sửa đổi khác nhau như bạn đang đề xuất - có lẽ bạn là người dùng trước đây của Subversion, nơi đây có thể là ?
Bạn có thể nhận được hiệu ứng tương tự như những gì bạn muốn, nhưng bạn phải sửa đổi bản sao làm việc của mình. Tôi sẽ không cam kết sửa đổi trừ khi bạn muốn loại bỏ một trong các nhà phát triển của bạn hoạt động.Bạn có thể để điều này:
$ git fetch
$ git checkout @{u} -- myfolder
git fetch
sẽ mang lại tài liệu tham khảo từ xa của bạn đến nay - nó sẽ lấy thông tin mới nhất từ máy chủ. git checkout @{u} -- myfolder
sẽ làm cho myfolder
giống như những gì tồn tại trong nhánh theo dõi. Điều này có hai hậu quả:
Bạn không có tất cả những thay đổi về chi nhánh địa phương của bạn (và bạn không muốn họ, vì vậy đó là okay), và
myfolder
sẽ hiển thị như là được sửa đổi vì nội dung của myfolder
có được cập nhật với phiên bản mới nhất có sẵn từ kho lưu trữ từ xa, nhưng nó là không giống với bản sửa đổi hiện tại của bạn.
Để có được bản sao làm việc của bạn trở lại bình thường, làm như sau:
$ git checkout -- myfolder
Từ đó, bạn gọi theo cơ chế thông thường của bạn để nhận chi nhánh của bạn to-date lên với điều khiển từ xa (có khả năng git pull
).
Điều này, tuy nhiên, có lẽ không phải là cách bạn muốn hoạt động. Mặc dù nhận xét của bạn, "không quan trọng trường hợp sử dụng", nó thực sự quan trọng. Thường có các cách tốt hơn để thực hiện mục tiêu tổng thể của bạn và quản lý sự phát triển của bạn, nhưng đòi hỏi phải hiểu những gì bạn đang cố gắng làm. Tại thời điểm này, những gì bạn đề xuất thực sự đi ngược lại cách Git được dự định làm việc.
Vì vậy, hãy để tôi đặt một số thứ cho bạn. Nghiên cứu sử dụng các chi nhánh chủ đề như một cách để quản lý công việc phát triển đang được thực hiện, thay vì sử dụng thư mục cho mỗi nhà phát triển trong cây. Rõ ràng, thay đổi hợp lý có thể được thực hiện trên các chi nhánh và hợp nhất khi bạn kiểm tra và phê duyệt chúng để đưa vào sản xuất.
Một nơi tốt để bắt đầu là here. Nó chứa một lượng thông tin hợp lý và một số thông tin theo các liên kết đến một số kiểu công việc khác nhau của Git. Nơi bạn muốn kết thúc là nơi có cam kết đại diện cho phiên bản bạn thực sự đưa vào sản xuất , mà không phá hủy công việc mà những người khác đang làm cho bạn. Lý tưởng nhất là, bạn nên gắn thẻ nội dung được đẩy vào sản xuất theo một số cách có ý nghĩa.
Tôi biết không ai thích nghe, nhưng việc đào tạo có thể rất hữu ích trong trường hợp của bạn. GitHub cung cấp một số free online classes cũng như một số tài nguyên khác. Đánh giá từ kinh nghiệm, một khi bạn nắm bắt cách Git hoạt động và các vấn đề nó giải quyết, bạn sẽ kết thúc với một quy trình làm việc tốt hơn nhiều.
Câu hỏi của bạn không phải là rất rõ ràng . Giả sử bạn có các thư mục 'dev1',' dev2' và 'production'. Bạn đang hỏi làm thế nào để mang lại tất cả những thay đổi từ 'production' từ một nhánh khác, hay bạn đang hỏi làm thế nào về cơ bản thiết lập nội dung của' production' thành một trong các thư mục dev? Dù bằng cách nào, cách bạn tiếp cận âm thanh này giống như cách bạn làm việc với công cụ. – jszakmeister
ok, tôi sẽ rephrase ... Tôi có một dự án, một chi nhánh và hai nhà phát triển và hai thư mục trong dự án. mỗi nhà phát triển hoạt động trên một thư mục. cả hai thay đổi và đẩy chúng vào nhánh. Tôi muốn chỉ kéo các thay đổi của một thư mục vào máy cục bộ – fredy
Bạn đang sử dụng Git để quản lý một bản sao làm việc? Hay bạn thực sự chỉ muốn tìm nội dung của một thư mục trong kho lưu trữ trên máy của bạn? Đánh giá bởi bình luận của bạn cho PherricOxide, nó nghe như sau. – jszakmeister