Câu trả lời ngắn
Kho lưu trữ trần là kho lưu trữ git không có bản sao hoạt động, do đó nội dung của .git là cấp cao nhất cho thư mục đó.
Sử dụng kho lưu trữ không trống để làm việc cục bộ và kho lưu trữ trần làm máy chủ / trung tâm trung tâm để chia sẻ các thay đổi của bạn với người khác. Ví dụ: khi bạn tạo một kho lưu trữ trên github.com, nó được tạo như một kho lưu trữ trần.
Vì vậy, trong máy tính của bạn:
git init
touch README
git add README
git commit -m "initial commit"
trên máy chủ:
cd /srv/git/project
git init --bare
Sau đó, trên máy khách, bạn đẩy:
git push username@server:/srv/git/project master
Sau đó, bạn có thể tự lưu bản đánh máy bằng cách thêm nó dưới dạng điều khiển từ xa.
Kho lưu trữ ở phía máy chủ sẽ nhận được các cam kết thông qua kéo và đẩy, chứ không phải do bạn chỉnh sửa các tệp và sau đó cam kết chúng trong máy chủ, do đó nó là một kho lưu trữ trần.
Chi tiết
Bạn có thể đẩy đến một kho lưu trữ không phải là một kho lưu trữ trần và git sẽ phát hiện ra rằng có một kho lưu trữ .git ở đó, nhưng vì hầu hết các kho lưu trữ "hub" không cần một bản sao hoạt động, nên việc sử dụng một kho lưu trữ trần là bình thường nó và được khuyến nghị vì không có điểm nào để có một bản sao hoạt động trong loại kho lưu trữ này.
Tuy nhiên, nếu bạn đẩy đến một kho lưu trữ không trống, bạn đang làm cho bản sao làm việc không nhất quán và git sẽ cảnh báo bạn:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
Bạn có thể bỏ qua cảnh báo này. Nhưng thiết lập được đề xuất là: sử dụng kho lưu trữ không trống để làm việc cục bộ và kho lưu trữ trần làm trung tâm hoặc máy chủ trung tâm để đẩy và kéo từ đó.
Nếu bạn muốn chia sẻ công việc trực tiếp với bản sao làm việc của nhà phát triển khác, bạn có thể lấy từ các kho lưu trữ khác thay vì đẩy.