2016-03-24 16 views
9

Tôi đang thực hiện một số hướng dẫn Git. Tuy nhiên, khái niệm "thư mục làm việc" vẫn được nhắc đến, tuy nhiên, không có hướng dẫn hoặc tài liệu nào tôi đọc chỉ ra đâu hoặc "thư mục hoạt động" này là gì.Git: Chính xác đâu là "thư mục làm việc"?

Tôi đã nghĩ rằng đó là thực sự là .git 's thư mục cha, hay còn gọi là thư mục tôi chạy git init trong. Tuy nhiên, video hướng dẫn tôi xem cuộc đàm phán về tình trạng của gì để cam kết và "thư mục sạch làm việc ":

trong thực tế, bạn thực sự có thể tạo một bản sao của các kho lưu trữ, và chắc rằng bản sao để nó không có một thư mục làm việc, điều này thực sự là gọi là clone trần. Đây thực sự là những gì GitHub sử dụng.

Nếu sự hiểu biết của tôi về "thư mục làm việc" là đúng, làm thế nào có thể một kho lưu trữ không có một "làm việc thư mục"? Và nó có nghĩa là gì, khi nó nói rằng GitHub sử dụng một "bản sao trần"?

+0

Nó được đề cập [tại đây] (https://git-scm.com/book/en/v2/Getting-Started-Git-Basics): "* Thư mục làm việc là một lần kiểm tra một phiên bản của Các tệp này được rút ra khỏi cơ sở dữ liệu nén trong thư mục Git và được đặt trên đĩa để bạn sử dụng hoặc sửa đổi * ". – Maroun

+1

Tôi đã đọc nó rồi. có thể là tiếng Anh của tôi, nhưng tôi không hiểu. Thư mục nào đang hoạt động chính xác? – shenkwen

Trả lời

2

Đó là nơi bạn có thể thanh toán dự án. Ví dụ thư mục mà bạn đã kiểm tra một nhánh của dự án của bạn. Nó thường là thư mục chứa thư mục .git. Đó là thư mục làm việc. Khi bạn thực hiện thay đổi đối với các tệp trong chi nhánh đã thanh toán, bạn thực hiện thay đổi đối với thư mục làm việc. Tại thời điểm này thư mục làm việc có những thay đổi không được cam kết. Vì vậy, ban đầu khi bạn đã không thực hiện bất kỳ cam kết thư mục làm việc sẽ được sạch sẽ như không có thay đổi.

5

này nên điều hy vọng rõ ràng cho chúng ta:

sự khác biệt giữa một kho lưu trữ được tạo ra bằng cách sử dụng git init lệnh và git init --bare lệnh là gì?

Các kho được tạo bằng lệnh git init được gọi là các thư mục hoạt động . Trong thư mục cấp cao nhất của kho bạn sẽ tìm thấy hai điều:

A .git subfolder with all the git related revision history of your repo 
A working tree, or checked out copies of your project files. 

Repositories tạo với git init --bare được gọi là các hợp đồng mua trần. Chúng có cấu trúc hơi khác so với các thư mục làm việc. Trước hết, chúng không chứa bản sao của tệp nguồn của bạn. Và giây, repos kho lưu trữ lịch sử sửa đổi git của repo của bạn trong thư mục gốc của kho lưu trữ thay vì trong thư mục con .git. Lưu ý ... trần kho lưu trữ thường được cung cấp một phần mở rộng .git.

Taken từ John Saints - What is a bare git repository?

Một git clone trần không chứa một thư mục làm việc của kiểm tra ra mã, nói cách khác.
Hãy nghĩ về nó như chỉ là thư mục .git (cơ sở dữ liệu Git) mà không cần bất cứ điều gì khác.

+1

Cảm ơn. Tôi bắt đầu hiểu. Nếu Github đang sử dụng clone trần và clone trần giống như thư mục '.git', tại sao không có' head', 'index',' hook' trong repo của Github? – shenkwen

+0

Đó là một câu hỏi rất hay! Beats me :) – jacmoe

2

Để loại kết hợp hai câu trả lời khác:

Như đã nêu trong Git Documentation:

Các thư mục làm việc là một thanh toán duy nhất của một phiên bản của dự án.

Điều này về cơ bản có nghĩa là nếu bạn thanh toán chi nhánh (ví dụ: chính) và ngồi trên một cam kết cụ thể (ví dụ: HEAD), thư mục làm việc của bạn là cụm từ "ô" cho tất cả các tệp và thư mục của bạn.

không phải là một thư mục/thư mục cụ thể. Thư mục làm việc bao gồm tất cả các thư mục, tệp ... mọi thứ.
Tôi đề cập đến điều này vì khi bạn muốn cam kết một số tệp, các tệp đó sẽ nằm trong thư mục làm việc và bạn cần phải giai đoạn chúng (sử dụng git add) trước khi cam kết (sử dụng git commit).

+0

Điều này không đúng. Khi bạn chạy lệnh 'git status', git so sánh một" thư mục làm việc "cụ thể với trạng thái của chỉ mục của bạn và phần đầu của nhánh của bạn. Tương tự như vậy, trừ khi bạn đã đặt một số biến môi trường cụ thể trong 'git init', nếu bạn cố gắng' git add' từ một vị trí bên ngoài thư mục gốc của thư mục .git của bạn thì bạn sẽ nhận được thông báo lỗi rằng bạn cần trả lại vào thư mục làm việc để chạy lệnh. Vì vậy, trong khi tôi đồng ý có một "thư mục làm việc" khái niệm, việc thực hiện Git cũng theo dõi một vị trí vật lý. – DanK

0

Thư mục làm việc chỉ đơn giản là thư mục cục bộ hiện tại của bạn mà bạn đang làm việc. ví dụ như nếu bạn có thạc sĩ, dev và tên bạn-dev như các chi nhánh từ xa của bạn, nếu bạn thanh toán từ dev để tenban-dev, tenban-dev tại là thư mục làm việc của bạn nếu bạn kiểm từ này (tenban-dev) thư mục làm việc khác nói dev, dev tại là thư mục làm việc mới của bạn

0

Theo documentation:

Cuối cùng, bạn có thư mục làm việc của mình. Hai cây còn lại lưu trữ nội dung của chúng một cách hiệu quả nhưng bất tiện, bên trong thư mục .git. Thư mục làm việc đưa chúng vào các tệp thực sự, giúp bạn dễ dàng chỉnh sửa chúng hơn. Hãy suy nghĩ về Danh mục làm việc như một sandbox, nơi bạn có thể thử thay đổi trước khi cam kết chúng vào khu vực dàn dựng (chỉ mục) của bạn và sau đó đến lịch sử.

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