Dưới đây là định nghĩa của một kho lưu trữ trần từ gitglossary :
Một kho lưu trữ trần thường là một thư mục có tên thích hợp với hậu tố .git không có bản sao kiểm tra cục bộ của bất kỳ tệp nào trong kiểm soát sửa đổi. Đó là, tất cả các tệp quản trị và kiểm soát Git thường có trong thư mục con .git ẩn được trình bày trực tiếp trong thư mục repository.git và không có tệp nào khác xuất hiện và kiểm tra. Thông thường các nhà xuất bản của kho lưu trữ công cộng làm cho kho lưu trữ trần có sẵn.
Tôi đến đây vì tôi đang chơi xung quanh với một "kho lưu trữ cục bộ" và muốn có thể làm bất cứ điều gì tôi muốn như thể đó là một kho lưu trữ từ xa. Tôi chỉ chơi xung quanh, cố gắng tìm hiểu về git. Tôi sẽ cho rằng đây là tình huống cho bất cứ ai muốn đọc câu trả lời này.
Tôi rất thích cho một ý kiến chuyên gia hoặc một số cụ thể phản ví dụ, tuy nhiên có vẻ như đó (sau khi lục lọi một số mã nguồn git mà tôi tìm thấy) chỉ đơn giản là đi đến tập tin .git/config
và thiết lập các lõi thuộc tính trần để đúng , git sẽ cho phép bạn làm bất cứ điều gì bạn muốn làm với kho lưu trữ từ xa. Tức là các dòng sau nên tồn tại trong .git/config
:
[core]
...
bare = true
...
(Đây là khoảng những gì lệnh git config --bool core.bare true
sẽ làm, có lẽ được khuyến nghị để xử lý các tình huống phức tạp hơn)
Lời biện minh của tôi cho khiếu nại này là, trong mã nguồn git, dường như có hai cách kiểm tra khác nhau nếu một repo trống hay không. Một là bằng cách kiểm tra một biến toàn cục is_bare_repository_cfg
. Điều này được đặt trong một số giai đoạn thiết lập thực hiện và phản ánh giá trị tìm thấy trong .git/config
tệp. Cái khác là một chức năng is_bare_repository()
. Dưới đây là định nghĩa của chức năng này:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}
Tôi không đã lần cũng không chuyên môn để nói điều này với sự tự tin tuyệt đối, nhưng như xa như tôi có thể nói nếu bạn có bare
thiết lập thuộc tính true
trong .git/config
, điều này luôn luôn phải trả lại 1
. Phần còn lại của chức năng có thể dành cho tình huống sau:
- core.bare không xác định (nghĩa là không đúng cũng không sai)
- Không có worktree (tức là thư mục con .git là thư mục chính)
Tôi sẽ thử nghiệm nó khi tôi có thể sau này, nhưng điều này dường như cho thấy rằng thiết lập core.bare = true tương đương với việc loại bỏ core.bare khỏi tệp cấu hình và thiết lập các thư mục đúng cách.
Ở bất kỳ giá nào, việc đặt core.bare = true chắc chắn sẽ cho phép bạn đẩy mạnh vào nó, nhưng tôi không chắc liệu sự hiện diện của các tệp dự án có khiến một số hoạt động khác bị sai lệch hay không. Thật thú vị và tôi cho rằng hướng dẫn để đẩy vào kho lưu trữ và xem những gì đã xảy ra cục bộ (tức là chạy git status
và hiểu kết quả).
mv repo/.git repo.git; rm -rf repo