Bạn chỉ cần đảm bảo rằng kho lưu trữ biết cây công việc ở đâu và ngược lại.
Để cho kho lưu trữ biết cây công việc ở đâu, hãy đặt giá trị cấu hình core.worktree
. Để cho cây công việc biết thư mục git của nó ở đâu, hãy thêm một tệp có tên .git (không phải là thư mục!) Và thêm một dòng như
gitdir: /path/to/repo.git
Vì git 1.7.5, lệnh init đã học thêm một tùy chọn cho việc này.
Bạn có thể khởi tạo một kho lưu trữ riêng biệt mới với
git init --separate-git-dir /path/to/repo.git
Điều này sẽ khởi tạo kho git trong thư mục riêng và thêm tệp .git trong thư mục hiện tại, đây là thư mục làm việc của kho lưu trữ mới.
Trước đây đến 1.7.5, bạn phải sử dụng các tham số hơi khác nhau và tự thêm tệp .git.
Để khởi tạo một kho lưu trữ riêng biệt, lệnh sau liên kết cây công việc với kho lưu trữ:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
Thư mục hiện tại của bạn sẽ là cây làm việc và git sẽ sử dụng kho lưu trữ tại /path/to/repo.git
. Lệnh init sẽ tự động đặt core.worktree
giá trị như được chỉ định với --git-dir
tham số.
Bạn thậm chí có thể thêm một bí danh cho điều này:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Sử dụng kiểm soát phiên bản git trên thư mục làm việc chỉ đọc
Với kiến thức ở trên, bạn thậm chí có thể thiết lập kiểm soát phiên bản git cho một thư mục làm việc mà không có quyền ghi. Nếu bạn sử dụng --git-dir
trên mọi lệnh git hoặc thực thi mọi lệnh từ trong kho lưu trữ (thay vì thư mục làm việc), bạn có thể bỏ tệp .git và do đó không cần tạo bất kỳ tệp nào trong thư mục làm việc. Xem thêm Leos trả lời